Главная
>
SEO > If-Modified-Since и If-None-Match, если PHP не установлен как модуль Apache
If-Modified-Since и If-None-Match, если PHP не установлен как модуль Apache
If-Modified-Since и If-None-Match, если PHP не установлен как модуль Apache
Многие разработчики (веб программисты), кто начинает "общаться" с кэшированием веб страниц на стороне клиента, знает о таких вещах (заголовках HTTP) как «If-Modified-Since» и «If-None-Match». Эти заголовки отдаются браузером при обращении к странице, которые лежат в его кэше. Для того, чтобы правильно сделал кеширование на стороне клиента, серверной части необходимо отправить заголовок "HTTP/1.0 304 Not Modified" и остановить передачу данных если содержимое запрошеной страницы не менялось с того времени, которое указано в присланном заголовке "If-Modified-Since".
Основная проблема кэширования на стороне клиента, заключается в получение содержимого заголовка "If-Modified-Since". Проблема заключается в том, что по дефолту указанный заголовок доступен из серверного приложения только в том случае, если интерпретатор PHP установлен в качестве модуля Apache, а это бывает редко на хостинг площадках, из-за соображений безопасности и удобства компиляции PHP.
Но т.к. кеширование благотворно влияет как на нагрузку сервера так и на отдачу страницы клиенту и на скорость индексации, нужно в любом случае ее реализовать.
Для этого есть универсальные методы, и не важно как установлен PHP.
И так...
В файл .htaccess записать несколько строчек:
RewriteEngine On
RewriteRule .* - [E=HTTP_IF_MODIFIED_SINCE:%{HTTP:If-Modified-Since}]
RewriteRule .* - [E=HTTP_IF_NONE_MATCH:%{HTTP:If-None-Match}]
Тогда, мы получим возможность использовать значения из заголовков по средствам массива SERVER, а именно $_SERVER['HTTP_IF_MODIFIED_SINCE'] и $_SERVER['HTTP_IF_NONE_MATCH'].
Если же, htaccess используется для ЧПУ (к примеру):
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [QSA]
То вариант будет вот таким:
RewriteRule .* - [E=HTTP_IF_MODIFIED_SINCE:%{HTTP:If-Modified-Since}]
RewriteRule .* - [E=HTTP_IF_NONE_MATCH:%{HTTP:If-None-Match}]
Так же, если используются работа с сессиями, то при их старте нужно прописать session_cache_limiter('private_no_expire'); а потом уже стартовать сессии session_start();
Свежие комментарии