Если вы используете 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 мы, вероятно, могли бы также начать кэширование запросов строки запроса, но я оставлю это в качестве упражнения для читателя:)