Дефиниция на lastmodified за html bitrix страници. Заглавието Last-Modified значително ускорява индексирането на нови страници. Как работи кеширането в браузърите

В района Оптимизация за търсачкиОколо уебсайтовете (SEO) циркулират много различни митове. Някои от тях имат основа, други са дошли от нищото. В тази бележка ще разгледаме един от тях - използването на заглавката на отговора last-Modified.

Преди известно време получихме документ, озаглавен „Препоръки на Ingate за уеб студия на популяризирани сайтове“. И една от "препоръките" беше следната:

След редизайн или при разработване на нов сайт трябва да се посочи датата на последната промяна на страниците на сайта (Last Modified).

За да добавите информация за датата на последната промяна на страниците на сайт в PHP, трябва да отидете в самото начало програмен кодвмъкнете скрипт във всяка страница


header("Последна промяна: " . date("D, d M Y H:i:s", time()) . " GMT");
?>

Именно тази дива глупост, тази пълна глупост и откровено луд код ме подтикна да напиша тази бележка. Тук ще се опитам да обясня какво е Last-Modified, защо е необходимо и как браузърите и търсачките го използват.

Какво е последно модифицирано

Уеб сървърът, когато предава информация на клиента (браузъри или робот за търсене), отчита доста допълнителни данни. Те могат да се видят в конзолата на браузъра, например:

конфигурирайте сървъра да издава правилни заглавки на отговор (например, ако страницата не съществува, издайте грешка 404 и ако бъде получена заявка If-Modified-Since, след това издайте код 304, ако страницата не е била променяна след дата, посочена в заявката).

Можете също така да видите, че ако сървърът не отговори по никакъв начин на условна GET заявка, тогава тя не се различава от обикновената заявка. Тоест заглавката Last-Modified с текущо време, освен това, неправилно оформените (здравей Integgate!) изобщо не са необходими!

И така, необходима ли е Last-Modified или не?

Общо необходимо. Но е важно да се разбере, че не самата заглавка играе роля, а целият сценарий на условна заявка, който трябва да бъде напълно изпълнен от сайта. Именно в този случай ще получим висока скорост на индексиране на сайта.

Но често е много трудно да се приложи това в готова CMS. Това може да изисква доста значителни промени в кода на самата CMS.

Въпреки че за редица CMS това може да се постигне чрез активиране на кеширане на страници. Ако CMS кешира страници, създавайки и обслужвайки по същество статични файлове, тогава самият уеб сървър ще отговори правилно на условни заявки. Например в WordPress това може да се направи с помощта на приставката WP Super Cache:

Нека го проверим в действие. Активирах този плъгин, отворих браузъра в анонимен режим и направих две заявки за една и съща страница. Ясно се вижда, че вторият отговор е правилен - 304 Not Modified:

Вместо заключение

Така се справихме със заглавката Last-Modified. Първо, той трябва да предава информация за датата и часа, когато документът действително е бил променен. Второ, отговорът на сървъра на условна заявка със заглавката If-Modified-Since е изключително важен.

Е, слушайте по-малко SEO специалисти, които не знаят основните основи на това как работи Интернет.

Синтаксис

Последно модифициран: , ::часова зона

Директиви

Едно от „Mon“, „Tue“, „Wed“, „Thu“, „Fri“, „Sat“ или „Sun“ (малки и малки букви). 2-цифрен номер на деня, напр. "04" или "23". Един от "Ян", "Фев", "Мар", "Апр", "Май", "Юн", "Юл", "Авг", "Сеп", "Окт", "Ноем", "Дек" ( различаващ главни от малки букви). 4-цифрен номер на годината, напр. "1990" или "2016". 2-цифрено число на часа, напр. "09" или "23". 2-цифрено число на минутите, напр. "04" или "59". 2-цифрено второ число, напр. "04" или "59".

часова зона

Средно време по Гринуич. HTTP датите винаги се изразяват в GMT, никога в местно време.

Примери

Последна промяна: сряда, 21 октомври 2015 г., 07:28:00 GMT

Спецификации Спецификация
Заглавие RFC 7232, раздел 2.2: Последна промяна Хипер текстПротокол за предаване

(HTTP/1.1): Условни заявки

Съвместимост с браузър

Таблицата за съвместимост в тази страница е генерирана от структурирани данни. Ако искате да допринесете за данните, моля, разгледайте https://github.com/mdn/browser-compat-data и ни изпратете заявка за изтегляне.

Актуализирайте данните за съвместимост в GitHubработен плот
ПодвиженChromeРъб, крайFirefoxInternet ExplorerОпераSafariУеб изглед на AndroidChrome за AndroidFirefox за AndroidOpera за AndroidSafari на iOS
Интернет на SamsungПоследно модифициранПълна поддръжка на Chrome ДаEdge Пълна поддръжка 12Пълна поддръжка на Firefox ДаIE Пълна поддръжка ДаOpera Пълна поддръжка ДаSafari Пълна поддръжка ДаWebView Android Пълна поддръжка ДаChrome Android Пълна поддръжка ДаFirefox Android Пълна поддръжка ДаOpera Android Пълна поддръжка ДаSafari iOS Пълна поддръжка Да

Samsung Internet Android Пълна поддръжка Да Заглавката Last-Modified HTTP казва на клиента часапоследна промяна страница (обект). Ако клиентът (браузър,) получи заглавката Last-Modified, тогава следващия път, когато адресът е достъпен, при условие че страницата (обектът) е в локалния кеш, той ще добави въпрос If-Modified-Since (дали страницата се е променила от датата на получаване в Последна промяна). На свой ред сървърът, след като е получил заявката If-Modified-Since, трябва да провери полученото времево клеймо с времето на последната промяна на страницата и, ако страницата не е променена, да отговори с 304 Not Modified.

Спестяване на трафик

Ако страницата не е променена, сървърът ще спре предаването на данни след изпращане на заглавки с кода 304 Not Modified; тялото на страницата, изображенията и други обекти няма да бъдат предадени.

Намаляване на натоварването на сървъра

Правилното прилагане на проверката на времето за последна промяна на страницата може значително (до 30% или повече) да намали натоварването на сървъра. Правилното внедряване означава проверка на времето преди генерирането на страницата на динамичен сайт. В този случай всички действия за генериране на страницата (запитване за съдържание от базата данни, разбор на шаблони, получаване на коментари и т.н.) няма да бъдат извършени. Това важи особено за сайтове с висок трафик и продължително потребителско посещение. Пример: потребител е на сайт за спортни новини и непрекъснато се актуализира начална страницав очакване на публикуване на резултата от мача. За няколко минути една страница може да бъде заявена и получена десетки пъти. Ако заглавката Last-Modified е изпратена и заявката If-Modified-Since е обработена правилно, тогава страницата действително ще бъде изпратена веднъж и всички следващи заявки ще получат отговор 304 Not Modified.

Ускорете индексирането от търсачките

Търсачките, чрез своите насоки за уеб администратори, препоръчват изпращане на заглавката Last-Modified и правилно обработване на If-Modified-Since.


Уверете се, че вашият уеб сървър поддържа HTTP заглавката If-Modified-Since. Тази заглавка ще позволи на уеб сървъра да каже на Google дали съдържанието на сайта се е променило от последното му обхождане. Поддръжката на тази функция ще намали натоварването пропускателна способности разходи.

Уверете се, че вашите http заглавки са правилни. По-специално, това, което е важно, е съдържанието на отговора, който сървърът дава на заявката if-modified-since. Заглавието Last-Modified трябва да показва правилната дата, на която документът е бил последно модифициран. Ако сървърът не показва последната дата на промяна на документа, вашият сайт ще бъде индексиран, но:
- резултатите от търсенето няма да показват датата до страниците на вашия сайт;
- при сортиране по дата, сайтът няма да бъде видим за повечето потребители;
- роботът няма да може да получи информация дали страницата на сайта е актуализирана след последното индексиране. И тъй като броят на страниците, които роботът получава от даден сайт при едно посещение, е ограничен, променените страници ще бъдат преиндексирани по-рядко.

Синтаксис

If-Modified-Since: , ::часова зона

Директиви

Едно от „Mon“, „Tue“, „Wed“, „Thu“, „Fri“, „Sat“ или „Sun“ (малки и малки букви). 2-цифрен номер на деня, напр. "04" или "23". Един от "Ян", "Фев", "Мар", "Апр", "Май", "Юн", "Юл", "Авг", "Сеп", "Окт", "Ноем", "Дек" ( различаващ главни от малки букви). 4-цифрен номер на годината, напр. "1990" или "2016". 2-цифрено число на часа, напр. "09" или "23". 2-цифрено число на минутите, напр. "04" или "59". 2-цифрено второ число, напр. "04" или "59".

часова зона

Средно време по Гринуич. HTTP датите винаги се изразяват в GMT, никога в местно време.

Ако-променено-от: сряда, 21 октомври 2015 г. 07:28:00 GMT

Последна промяна: сряда, 21 октомври 2015 г., 07:28:00 GMT

Спецификации Спецификация
RFC 7232, раздел 3.3: If-Modified-Since Протокол за прехвърляне на хипертекст (HTTP/1.1): Условни заявки

(HTTP/1.1): Условни заявки

Съвместимост с браузър

Таблицата за съвместимост в тази страница е генерирана от структурирани данни. Ако искате да допринесете за данните, моля, разгледайте https://github.com/mdn/browser-compat-data и ни изпратете заявка за изтегляне.

Актуализирайте данните за съвместимост в GitHubработен плот
ПодвиженChromeРъб, крайFirefoxInternet ExplorerОпераSafariУеб изглед на AndroidChrome за AndroidFirefox за AndroidOpera за AndroidSafari на iOS
If-Modified-SinceПоследно модифициранПълна поддръжка на Chrome ДаEdge Пълна поддръжка 12Пълна поддръжка на Firefox ДаIE Пълна поддръжка ДаOpera Пълна поддръжка ДаSafari Пълна поддръжка ДаWebView Android Пълна поддръжка ДаChrome Android Пълна поддръжка ДаFirefox Android Пълна поддръжка ДаOpera Android Пълна поддръжка ДаSafari iOS Пълна поддръжка Да

Нямах никаква тъга, докато не го инсталирах днес SEO плъгинСканиране. Добър плъгин, който показва какво може да не хареса Google във вашия сайт и сървър. И имаше едно нещо, което със сигурност не харесвах в моя сайт - липсата на последна промяна .


Малко теория, тъкмо днес разбрах за това. Last-modified е http заглавка, която изпраща сигнал за това дали е имало промени на такава и такава страница или не, изпращайки отговор If-Modified-Since с код 304...

Въпреки че без всичко това сайтът ще бъде индексиран, както казва Yandex, има и значителни недостатъци в отсъствието на този хедър:

  • резултатите от търсенето няма да показват датата до страниците на сайта;
  • при сортиране по дата сайтът няма да бъде видим за потребителите;
  • роботът няма да може да получи информация дали страницата на сайта е актуализирана след последното индексиране. И тъй като броят на страниците, които роботът получава от даден сайт при едно посещение, е ограничен, променените страници ще бъдат преиндексирани по-рядко.

Както можете да видите, има много недостатъци и на първо място не е много бързо индексиране и повторно индексиране на сайта. Тоест направихте ПОЛЕЗНА промяна в статията и сега правя много от тях всеки ден и Yandex и Google могат да видят това е само след няколко месеца! Не, не ни трябва такъв хокей, сега ще се разбия на парчета и ще поправя този недостатък!

Как да проверя последната промяна?

Можете да проверите различни начини, в wordpress най-лесно е да инсталирате горния плъгин SEO сканиране, ми даде това:

Също така се държи, но това е друга история, тогава ще се задълбоча и в това. Можете също да проверите последно модифициран чрез услуга със същото име last-modified.com


Както можете да видите, той също така показва липсата на отговор If-Modified-Since - Последна промяна не е намерена! Или можете да използвате услугата Yandex Проверка на отговора на сървъра


Тук е същото - HTTP код на състоянието:„304 Not Modified“ означава, че системата не работи. Въпреки че след известно време очевидната грешка изчезна, кодът за отговор 304 така и не се появи.

Веднага се заинтересувах дали това изобщо работи за някого? Реших да проверя това с онези блогъри, които сами са написали ръководства по тази тема:


Да, човекът от ТОП намери Last-Modified за тази заявка, което означава, че е възможно и за мен. Между другото, неговата статия изброява много начини за конфигуриране на Last Modified, нека ги опитаме, въпреки че намерих други.

Как да конфигурирам последна промяна?

Ще опиша всички методи, които опитах, и веднага ще кажа дали работи за мен или не. Но имайте предвид, че ако не работи за мен, това не означава, че няма да работи за вас.

1. Първият метод е да инсталирате плъгина

Най-лесният начин за тези, които имат WordPress, е да инсталират плъгини, предназначени за това, например: Добавяне на заглавки, ако е променено от или ако е променено от заглавка.

Нито един от тези плъгини не работи за мен, не знам защо. Може би ще работи за вас?

2. Втори метод - PHP код

Обслужване last-modified.com, описано по-горе, предлага да поставите следния php код във файла header.php в самото начало:

= $LastModified_unix) ( header($_SERVER["SERVER_PROTOCOL"] . " 304 Not Modified"); изход; ) header("Last-Modified: ". $LastModified);

?>

И на мен не ми помогна. Предлагам също така да опитате да го поставите във файла index.php в корена на сайта, но и това не ми помогна.

3. Третият метод е писане в .htaccess Ако имате Apache сървър, най-вероятно това ще работи за вас. Необходим във файл

.htaccess в корена на сайта поставете кода:

RewriteRule .* - RewriteRule .* -
При мен не се получи, защото имам комбинация от Ngnix + Apache и всички тези манипулации с .htaccess най-често не работят.

След всички тези мъки си помислих: защо само аз страдам? Ще пиша на службата за поддръжка на хостинг, хората там са компетентни, може би ще ми дадат съвет? Написах го и седя и чакам.

Получих отговор от техническата поддръжка:
Просто е. Страниците на вашия сайт се генерират от PHP скриптове, които не показват тази заглавка в браузъра.
Уеб сървърът (nginx) за статични файлове (jpg, gif, css, js и др.) показва датата на последната модификация на файла в последния модифициран хедър. Примери в екранни снимки.