http://wordpress.org/extend/plugins/category-templates-two/
Hetzner ведь бесплатно к каждому серверу предоставляет 100Gb для резервных копий? Не подходит?
Даёт.. Можно.. Возможно, неудобно, но на мой взгляд ничего криминального нет (не думаю, что дело дойдёт до ограничения по количеству файлов в каталоге.. :))
Если 7-10$ (вроде 5$ + скидка за опт.. на том же хостинге) для начинающего вебмастера сумма неподъёмная - jooml-ы вполне могут потесниться.. :)
Этот код имеет отношение и к nginx и к кэшированию :) Но не к кэшированию в nginx
Заголовок expires указывает браузеру, когда ответ следует считать устаревшим (т.е. до какого времени можно этот ответ сохранять локально /кэшировать в браузере/) - что позволяет избежать повторного обращения к серверу (если, конечно, браузер не игнорирует этот заголовок) - т.е. сократить общее число запросов.
Именно этим заголовком и определяется "автоматическое" кэширование.
Я к тому, что оценка в некотором роде не совсем корректная..
Тут дело такое, что нагрузка "из ниоткуда", как правило не берётся.. и на первых порах (на этапе проектирования и реализации базовой функциональности) не всегда можно утверждать, что проект выстрелит (не в том смысле, что на сайт вообще будут заходить, а в том, что дело дойдёт до меганагрузок)..
Как раз логически и подошли к ответу на вопрос..
В чём преимущество фреймворка?
В том, что вполне рабочий прототип, как правило, быстрее и удобнее реализовать используя некоторый каркас (не обязательно полноценный "фреймворк".. это может быть набор классов/библиотек.. тот же ORM, шаблонизатор и тд.)
* естественно, это не повод делать "как попало", но и не особо заморачиваться преждевременной оптимизацией и углубляться в проектирование и реализацию вспомогательных неприоритетных функций
Просто фреймворк для большинства возникающих задач (различного уровня и сложности - пользователи, ACL, работа с БД, с кэшем /различные бэкенды/, обработка исключений, логирование , валидация форм и т.д.) может предложить готовое (или почти готовое) решение. С гораздо меньшим объёмом кода (вспомнить тот же JQuery - write less, do more). Плюс не только (или не столько) в объёме, сколько в том, что улучшается "читабельность" - можно сосредоточиться на "основном", а не на реализации отдельных моментов.
И, как правило, компоненты/классы гибко настраиваемые и готовые к взаимодействию между собой (_кэширование_ результата запроса к _БД_, логирование исключений)...
В случае "удачного" выбора фреймворка и правильного проектирования приложения не исключён вариант, что при увеличении нагрузки (где-то тут были трёхзначныеК цифры) не потребуется переезжать, а достаточно будет, к примеру, вынести БД на отдельную машины и переписать некоторые участки с ORM на "чистый" SQL.. чего-нибудь кэшировать.. В общем, обойтись без глобальных изменений.
Как правило, чтобы более-менее разобраться в сколько-нибудь серьёзном фреймворке, понимать "что делаешь" и почему "именно так" (а что, можно ещё как-то о_О ?), просто прочитать доки - маловато... Особенно, если раньше не приходилось "общаться".
После пары-тройки проектов (возможно, не особо масштабных, но и не "хеловорлд") начинаешь входить во вкус и ощущать значительный прирост по скорости /если повезёт - огромное удовольствие от процесса../
Ayavryk, а .com сообщества?
Да, можно задать заголовки четвёртым параметром функции mail
Content-Type: text/plain; charset="windows-1251"
Видимо, так
mail ($address,$sub,$mes,'Content-Type: text/plain; charset="windows-1251"');
http://ru.wikipedia.org/wiki/%CA%EB%EE%E0%EA%E8%ED%E3
Яндекс в явном виде его не одобряет
Тут, конечно, всё в интересах пользователя, однако...
можно рассмотреть, вариант более "релевантные" товары показывать выше.. (т.е. выводить все игрушки, но красные отображать первыми), причём для "чистоты" сортировку такую можно делать javascript-ом
+ задать уникальный session_save_path, иначе, если на сервере есть другие пользователи/сайты garbage collector "почистит" всё до кучи...
Милованов Ю.С, есть ощущение, что если добавить GROUP BY, то количество записей уменьшится.. до 1 на каждый уникальный b.title
R34-zevs, так надо MySQL оптимизировать, или разобрать результат его работы?
Чтобы вывод был похожим, следует
while($result = $db->fetch_object($query)) { print_r($result); }
заменить на что-то вроде
$old_title = ''; while($result = $db->fetch_object($query)) { if ($old_title!=$result->title) { echo "<b>{$result->title}</b><br/>"; $old_title = $result->title; } echo "- {$result->name}<br/>"; }