Я новичек в программировании. Сейчас начинаю писать CMS для себя, чтобы была легкая, быстрая под свои нужды, основа - Новости и Статьи. Как правильно использовать кэширование? Как лучше для главной страницы при наличии множества различных блоков? Как правильно для страницы навигации постраничной?
--- P.S. Наставьте на путь истинный, чтобы изначально я сделал правильный выбор и потом к этому не возвращался и не переделывал.
Houston, тут стоит подумать..) Есть несколько проверенных мной вариантов: - кэширование базы данных через memcached. - кэширование через шаблонизатор (к примеру Smarty). - кэширование отдельных элеметов страницы в статичные файлы (ob_stat). - кэширование значений блоков в json файлы (достаточно быстрый способ).
Какой выбирать зависит от проекта, с учетом постраничной навигации, отдал бы предпочтение memcached и последнему способу...
Я думал делать через - кэширование отдельных элеметов страницы в статичные файлы (ob_stat).
К примеру как хотел для новости, Добавляем новость в базу, при первой загрузке создается Html`ка. И все последующие разы загружается html. При редактировании конкретной новости, удаляется ее кеш. И потом заново.
Houston, сколько у Вас будет новостей? 100 или 100 000? Файловое хранилище можно использовать только для популярных новостей. Иначе, у Вас будет ужасно тормозить работа файловой системы. Уж куда эффективнее будет использовать Memcache.
Ну а почему говорят, что просто HTML сайты намного быстрее работают? Ну в будущем планируется меньше 100 000 новостей и статей, соответственно чтобы не переделывать хочется сразу определиться как делать, к тому же потом этот скрипт использовать на других сайтах, чтобы решение было универсально хорошее.
А как тогда поступать? Это же все равно будет быстрее и лучше чем просто файл news.php?id=xxx при открытии которого будут из базы тянуться данные новости, в этом файле будут include`ться footer и header
То есть не стоит делать так для каждой новости?
Сначала вышеописанный скрипт проверяет наличие существования версии странички в кэше, и, если она имеется, скрипт читает и выводит её. В противном случае, он использует буферизацию вывода для создания версии страницы в кэше. Она сохраняется как файл, после использования ob_end_flush для отображения страницы пользователю.
Houston, к тому, что Вы выдумываете велосипед. Вариантов готовых движков масса, втч новостных. Поверьте, Вы не первый и не последний, кто решил сделать супер-пупер движок. Граблей там будет ну очень много. Но если хотите экзотики...
А если хотите, чтобы все работало, возьмите готовый движок, исходя из прогнозов нагрузки и потребления системы выберите хостинг, почитайте про типы и варианты кеширования, благо, информации по этому поводу масса.