Меню Закрыть

304 Not modified что это

Содержание

Тут мы обсудим работу с заголовком 304 Not Modified на PHP. Здесь вы не найдете подробного разжевывания работы функций, но представлен простой фрагмент кода, который решит эту задачу.

Этот материал может помочь новичкам разобраться в теме, как добиться правильного отображения текущего состояния сайта в браузерах пользователя. Дабы не вдаваться в подробности кеширования файлов сайта на стороне браузеров, прокси серверов, и не лезть в настройки веб сервера (ну мало ли просто не хочется), особенно если есть навыки работы в PHP, предлагаю ознакомиться с моим постом!

Хочу с вами поделиться своей идеей, а точнее, просто способом, которым я реализовал отдачу заголовков LastModified и Not Modified, в случае, когда сайт собран из блоков + файлы таблиц стилей, прочих подключаемых файлов. (Изменив один из блоков, закешированный сайт продолжает отображаться в старом варианте — в браузерах пользователей).

Для решения этой проблемы достаточно добавить этот код в самый верх страницы, предварительно проработав его под свои файлы сайта.

Работа такого блока кода достаточно проста пониманию, но на заре своих опытов в программировании, пока я еще не определился с тем, чему хочу посвятить свою дальнейшую деятельность, эта тематика мне доставила достаточно много хлопот, поскольку дорвеи и прочие сайты (как сделать сайт самому) не могли мне тут помочь, и мне пришлось начать разбираться в PHP с самых базовых основ и возможностей.

1. Определим время последнего изменения текущей страницы, и прочих блоков php (включая и файл CSS и какие угодно другие файлы) и присвоим дексрипторы этих таймштампов в переменные.

2. Далее следует стандартный алгоритм выбора большего числа с занесением его в третью переменную. Подробно описывать не буду.

3. И когда известен самый свежий блок, которых у нас в странице много, мы возьмем его время изменения и присвоим это значение нашей странице, не забыв перевести из формата тайм штамп в формат GMT

gmdate(«D, d M Y H:i:s GMT», $LastModified_unix);

4. При первом обращении браузера к серверу, браузер получит всю страницу целиком и время изменения страницы.
5. При последующем обращении, браузер отправит серверу это значение времени, и, если в нашей странице ничего не менялось, получит ответ Not Modified. Страница не будет передана в браузер.

=$aas1) <
$timetime = $tekuchaya_page;
>
else <
$timetime = $aas1;
>

if($aas2>=$timetime) <
$timetime = $aas2;
>
if($aas3>=$timetime) <
$timetime = $aas3;
>
if($aas4>=$timetime) <
$timetime = $aas4;
>
if($aas5>=$timetime) <
$timetime = $aas5;
>
if($aas6>=$timetime) <
$timetime = $aas6;
>

Читайте также:  Как повысить качество картинки в фотошопе

$LastModified_unix = $timetime; // время последнего изменения страницы

$LastModified = gmdate(«D, d M Y H:i:s GMT», $LastModified_unix);
$IfModifiedSince = false;
if (isset($_ENV[‘HTTP_IF_MODIFIED_SINCE’]))
$IfModifiedSince = strtotime(substr($_ENV[‘HTTP_IF_MODIFIED_SINCE’], 5));
if (isset($_SERVER[‘HTTP_IF_MODIFIED_SINCE’]))
$IfModifiedSince = strtotime(substr($_SERVER[‘HTTP_IF_MODIFIED_SINCE’], 5));
if ($IfModifiedSince && $IfModifiedSince >= $LastModified_unix) <
header($_SERVER[‘SERVER_PROTOCOL’]. ‘ 304 Not Modified’);
exit;
>
header(‘Last-Modified: ‘. $LastModified);
header(‘Content-type: text/html; charset=utf-8’);
?>

Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.

Один из этапов оптимизации интернет-сайта для его правильной работы и успешного продвижения — оптимизация на стороне сервера. Среди прочих моментов — настройка правильного ответа сервера на запрос «Last-Modified». Правильная настройка этого параметра может повлиять на увеличение скорости загрузки сайта и положительно скажется на его индексации поисковыми роботами.

Что такое Last-Modified и зачем он нужен?

Как видно из названия, заголовок Last-Modified говорит клиенту (посетителю сайта) о времени последнего изменения той или иной страницы сайта. Если в качестве посетителя сайта выступает поисковый робот и на сайте (на сервере) не настроен (или настроен неправильно) ответ Last-Modified на запрашиваемый документ или страницу, поисковому роботу ничего не остается, как производить индексацию всех страниц интернет-ресурса снова и снова при каждом посещении, таким образом создавая определенную нагрузку на сервер, расположенный на хостинг-площадке. А если количество страниц сотни или даже тысячи? В зависимости от характеристик и возможностей и сервера, существует вероятность «нарваться» на какую-нибудь ошибку со стороны хостинга. В дополнение к этому следует отметить, что поисковый робот имеет лимит на количество индексируемых «за раз» страниц, поэтому в случае отсутствия правильной настройки заголовка Last-Modified, мы рискуем тем, что неизмененные страницы проиндексируются роботом, а нужные нам новые страницы — нет.

Исходя из спецификации RFC 2616, описывающей протокол передачи гипертекста HTML, клиент может «спросить» у сервера, не изменилась ли страница с определенной даты, послав серверу заголовок «If-Modified-Since». Если запрашиваемая страница не изменилась, сервер возвратит заголовок «304 Not Modified» и браузер не будет загружать страницу, а web-сервер не будет отдавать много данных. В противном случае (если страница сайта изменялась со времени предыдущего запроса), сервер возвратит ответ «200 OK» и непосредственно код самой страницы.

Читайте также:  1 11 21 1211 111221 312211 Продолжить

В дополнение к вышесказанному упомянем рекомендации Яндекса: «Робот не сможет получить информацию о том, обновилась ли страница сайта с момента последнего индексирования. А так как число страниц, получаемых роботом с сайта за один заход, ограничено, изменившиеся страницы будут переиндексироваться реже» .

ИТОГО: важным назначением заголовка «Last-Modified» служит информирование посетителя сайта и поискового робота о дате последней модификации какого-либо документа.

Для чего нужна правильная настройка Last-Modified?

При помощи правильной настройки ответа сервера Last-Modified мы сможем достичь сразу несколько положительных результатов для нашего сайта:

  • Увеличивается скорость загрузки страницы сайта для людей: в случае, если страница уже была посещена пользователем и на момент следующего посещения страница не менялась, браузер посетителя не будет заново загружать страницу, а отобразит ее сохраненную в кеше копию;
  • Снижается нагрузка на хостинг-площадку (сервер): при таком алгоритме работы сервер будет загружаться гораздо меньше за счет необходимости передачи посетителю сайта объема только измененных страниц;
  • Отображается дата последнего документа в поисковой выдаче: этот факт может привлекать посетителей к вашему сайту, если будет отображаться «свежая» дата;
  • Сортировка по дате: страницы сайта примут участие в сортировке по дате в поисковой выдаче;
  • Существенно ускоряется индексация сайта поисковыми роботами: за счет быстрого ответа вашего сайта о дате сканируемых страниц, старые (уже проиндексированные) страницы будут «отбрасываться в сторону», уступая место «свежим» документам. Этот пункт является наиболее значимым при продвижении сайта, т.к. высокая скорость индексации повышает уровень доверия к сайту у поисковых роботов.

Как проверить, корректно ли настроен Last-Modified?

Один из сервисов, на котором можно проверить правильность (да и вообще существование) настроенного ответа сервера Last-Modified — одноименный

В поле ввода необходимо написать адрес вашего сайта или конкретной страницы и нажать на кнопку «Проверить». Результатом работы сервиса будет демонстрация ответа вашего сайта на запрос заголовков «Last-Modified» и «304 Not Modified». Пример такой проверки:

При отрицательном результате крайне рекомендуем приступить к настройке .

Настраиваем Last-Modified

Рассмотрим реализацию ответа HTTP-заголовка Last-Modified на PHP.

В интернете очень часто встречаются такие рекомендации по настройке Last-Modified:

Так и хочется воскликнуть: «Такой хоккей нам не нужен!» И давайте разберемся почему. В ответ на запрос пользователя функция gmdate вернет нам текущую дату по Гринвичу (GMT). И так будет происходить каждый раз при каждом запросе пользователя или поискового робота — сервер будет возвращать нам именно свою текущую дату. Получается, что при каждом посещении вашего сайта поисковиками, они будут видеть, что запрашиваемая страница только что обновлена. Это может быть «полезным» лишь несколько раз. Через некоторое время поисковик поймет, что его «дурят» и утратит какое-либо доверие к вашему сайту. Соответственно, такая реализация нам не подходит.

Читайте также:  Htc one dual sim модель

Обратимся за помощью к вышеупомянутому ресурсу last-modified.com. На нем также представлен вариант реализации HTTP-заголовка Last-Modified на PHP. Выглядит он следующим образом:

= $LastModified_unix) <
header($_SERVER[‘SERVER_PROTOCOL’] . ‘ 304 Not Modified’);
exit;
>

Давайте разберем работу этого кода. Переменная $LastModified_unix задается вручную в формате Unix Time Stamp (число секунд, прошедших с начала эпохи Юникс — с 1 января 1970 года).

Функция gmdate возвращает текущее время по Гринвичу в формате Day, DD Mon YEAR HH:MM:SS GMT.

Далее: получаем время последнего изменения страницы, проверяем наличие If-Modified-Since, если есть — отдаем 304 Not Modified и останавливаем работу скрипта. В противном случае генерируем заголовок Last-Modified и отдаем страницу целиком.

В указанном выше варианте предлагается задавать время $LastModified_unix вручную. А что делать, если на сайте очень много страниц? Для этого немного «модернизируем» скрипт, заменив в нем всего лишь одну первую строчку:

= $LastModified_unix) <
header($_SERVER[‘SERVER_PROTOCOL’] . ‘ 304 Not Modified’);
exit;
>

В обновленном варианте первая строчка кода преобразует текстовое представление даты на английском языке в метку в формате Unix Time Stamp, таким образом используя автоматически вычисленное время изменения текущей страницы сайта.

Всё, готово! Теперь нам остается вставить получившийся код в раздел . каждой страницы сайта и наслаждаться высокой скоростью загрузки страниц и их индексации поисковыми роботами.

Поможем с настройкой Last-Modified!

Начните с простого звонка Наш телефон — — работает в режиме нон-стоп, чтобы вы могли оперативно получать интересующую вас информацию по решению задач развития и поддержки вашего сайта. Или пишите на электронную почту [email protected]. Мы проконсультируем по всем вопросам и подберем оптимальный тариф для вашей компании.

Все услуги

Битрикс24

Удобная и понятная система управления компанией и бизнес-процессами, включающая в себя полный комплекс инструментов, необходимых современному руководителю предприятия и его сотрудникам.

Правильно настроенный сервер должен возвращать код 304 Not Modified , если клиент запросил документ методом GET , использовал заголовок If-Modified-Since или If-None-Match и документ не изменился с указанного момента. При этом сообщение сервера не должно содержать тела страницы.

Рекомендуем к прочтению

Добавить комментарий

Ваш адрес email не будет опубликован.