Возможно, Вы хотите к явному более точно, что Вы хотите кэшировать. У Вас есть все это возможности кэшироваться:
На основе моего опыта я поставил Вас, что Ваш код может быть улучшен много, прежде чем мы начнем говорить о кэширующихся вещах. Рассмотрите, например, как хорошо структурированный навигация Вашего сайта и как хорошо Вы управляете пользовательским опытом. Затем проверьте свой код с инструментом как XDebug.
Проверьте также, как хорошо Вы делающий Ваши SQL-запросы и как хорошо Вы индексирующий Ваши таблицы. Затем проверьте свой код снова для поиска возможностей применять правило "чтение много раз, но запись только однажды"
Используйте простой инструмент как YSlow для вывода подсказок других простых вещей улучшиться. Проверьте свой код, снова ища возможности поместить логику в браузер (через JavaScript)
Seconding memcached, делает простой материал хорошо и может пойти дистрибутивный и весь этот джаз при необходимости в нем также
Можно также кэшироваться в памяти, которая намного более эффективна. Попробуйте memcached.
При использовании Apache можно использовать mod_rewrite для статичного кэширования веб-страниц. Позволяет говорят, что Вы используете PHP, и у Вас есть запрос на "/somepage.php". В Вашем .htaccess файле Вы помещаете следующее:
RewriteEngine on
RewriteCond %{QUERY_STRING} ^$ # let's not cache urls with queries
RewriteCond %{REQUEST_METHOD} ^GET$ # or POST/PUT/DELETE requests
RewriteCond static_cache/%{REQUEST_URI} -s # Check that this file exists and is > 0 bytes
RewriteRule (^.*$) static_cache$1 [L] # If all the conditions are met, we rewrite this request to hit the static cache instead
Если Ваш кэш поднимается пустой, запрос обработан Вашим сценарием PHP, как обычно, поэтому теперь это - просто вопрос того, чтобы заставлять Ваш сценарий PHP сохранить получающийся HTML в кэше. Самый простой способ сделать это использует другое правило htaccess предварительно ожидать конец, добавляют несколько php файлов ко всем Вашим запросам php (этот, мог бы или не могла бы быть хорошая идея, в зависимости от Вашего приложения):
php_value auto_prepend_file "pre_cache.php"
php_value auto_append_file "post_cache.php"
Затем Вы сделали бы что-то вроде этого:
pre_cache.php:
ob_start();
post_cache.php:
$result = ob_get_flush();
if(!$_SERVER['QUERY_STRING']) { # Again, we're not caching query string requests
file_put_contents("static_cache/" + __FILE__, $result);
}
С некоторыми дополнительными регулярными выражениями в .htaccess файле мы могли, вероятно, начать кэшировать запросы строки запроса также, но я оставлю это как осуществление для читателя :)