Проверява се последната модифицирана заглавка. Заглавието Last-Modified ускорява в пъти индексирането на нови страници

Защо да персонализирате заглавката Last-Modified. Нека се опитаме да разберем настройката на заглавката Last-Modified възможно най-бързо и лесно.

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

Целта на този хедър е да съобщи на клиента (браузър или търсачка) информация за последни промениконкретна страница. Клиентът изпраща заглавка If-Modified-Since към сървъра. Ако на страницата не бъдат намерени промени, тогава от сървъра се връща заглавка „304 Not Modified“. В този случай страницата не се зарежда.

Ако са направени промени, това ще бъде взето под внимание и сървърът ще върне заглавката „200 OK“ (страницата ще се зареди с актуализирано съдържание).

Правилното конфигуриране на Last-Modified осигурява следните предимства:

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

    Отговорът е прост: ако на сайта са променени само 20 страници, тогава роботът не трябва да индексира всичките 500 в търсене на ново съдържание, тъй като Last-Modified ще посочи страници с промени.

    Last-Modified е особено важно за ресурси с голям брой страници, тъй като роботът има ограничено време за обхождане на всеки сайт и може да няма време да достигне до желаните страници.

    Как да настроите Last-Modified

    Първо трябва да проверите дали сте конфигурирали този хедър. За да направите това, можете да използвате услугите varvy.com , last-modified.com или tools.seo-auditor.com.ru . Ако проверката показа липсата на заглавка, тогава трябва да започнете да я настройвате.

    Ако имате статичен сайт, тогава за всяка страница трябва да напишете кода, който виждате на екрана:

    След всяка промяна на съдържанието променяйте ръчно датата в кода. И какво всеки път ме питаш? Да, ако сайтът е статичен.

    Ако сайтът е динамичен, тогава използваме настройката в PHP. Често виждате код като този:

    header("Last-Modified: ". date('r',strtotime($post->post_modified)))

    Трябва да се добави към header.php. Но ще работи само за публикации и страници и няма да работи на главната страница. Също така не е валидно за таксономии, архиви и отчитане на нови коментари.

    $LastModified_unix = 1294844676;

    $Last Modified = gmdate("D, d M Y H:i:s \G\M\T", $LastModified_unix);

    $IfModifiedSince = невярно;

    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));

    Ако ($IfModifiedSince && $IfModifiedSince >= &LastModified_unix) (

    заглавка ($_SERVER['SERVER_PROTOCOL'] . ' 304 не е променено');

    header('Последна промяна: ' . $LastModified);

    Можете също така да персонализирате заглавката, като напишете два реда във файла .htaccess:

    RewriteRule .*

    RewriteRule .*

    Но в този случай трябва да проверите дали има проблеми от страна на хостинга.

    За да не предписвате кодове, можете да използвате готови решения за конфигуриране на Last-Modified. Например за CMS WordPress има добавки Clearfy и Last Modified Timestamp. Персонализирането може да се извърши с помощта на приставката WP Super Cache. За да направите това, в разширените настройки активирайте елемента „Грешка 304“ (поддръжката за отговор 304 е деактивирана по подразбиране, тъй като някои хостинг може да имат проблеми). Други CMS също имат свои собствени плъгини или в краен случай можете да поръчате плъгин от програмист.

    Трябва да се разбере, че настройката Last-Modified не винаги е полезна (например, когато на всяка страница е инсталиран "през" блок информация с редовно променящо се съдържание на същото съдържание). В този случай търсачките може вече да не възприемат информацията като нова и ще посещават вашия сайт по-рядко.

    В противен случай, като конфигурирате Last-Modified, получавате:

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

    Защо тази публикация е в секцията SEO? Последна промяна, както уверяват търсачките, е много важна http заглавка, която е необходима, за да се отчете датата на последната промяна на документа, тоест датата на последната промяна на страницата.

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

    1. Скоростта на индексиране на нови страници се подобрява и роботът може да вземе повече страници в индекса за 1 посещение.
    2. Подобрява скоростта на повторното индексиране на страниците, на които сте направили промени. Това е много полезно, но без това заглавие за публикуване на редакциите ви трябва да изчакате по-дълго.

    По принцип това вече е достатъчно, за да искате да проверите и, ако е необходимо, да коригирате тази заглавка.

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

    Има няколко инструмента, този ми хареса най-много − http://www.tools.seo-auditor.com.ru/if-modified-since/
    Тук просто трябва да въведа адреса на главната страница или която и да е статия и след това да избера робота за търсене - Yandex.

    Последна промяна, намерена на моя сайт, страхотна е. Но първоначално го нямаше, как го настроих?


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

    Честно казано нищо не ми помогна. Може би защото сървърът е nginx. Инсталирах AddHeaders - този плъгин поставя всички полезни http хедъри, включително последната промяна, но този плъгин не ми помогна, въпреки че преди около година успешно активира този хедър на моя сайт.

    Също така в този блог сложих премиум плъгина Clearfy, за който писах. Полезно нещо, има и функция, която ще ви позволи да поставите последната промяна.

    Активирах опцията, но заглавието не беше върнато въз основа на резултатите от проверката. Но в крайна сметка всичко се реши от призива към тях. поддръжка на плъгини - там описах конфигурацията на моя сървър и ми дадоха конкретни съвети - отидете в контролния панел на сървъра, дезактивирайте това и това. Казано – направено и сега титлата е дадена.

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

    Универсално решение - плъгинът AddHeaders най-вероятно е подходящ за вас, ако имате apache сървър. Ако nginx, опитайте да деактивирате ssi в настройките на домейна и отново активирайте този плъгин.

    Синтаксис

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

    Директиви

    Едно от „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Операсафариandroid webviewChrome за 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 Пълна поддръжка Да

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

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

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

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


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

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

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

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

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

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

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

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

    Но често е много трудно да се приложи това в завършен CMS. Може би това ще изисква доста значителни промени в кода на самата CMS.

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

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

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

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

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

    Бележката:активирана е адаптивната версия на сайта, която автоматично се настройва към малкия размер на вашия браузър и скрива някои детайли от сайта за по-лесно четене. Приятно гледане!

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

    Правилен отговор на сървъра

    Въпреки факта, че това е доста дребен детайл при изграждането и оптимизирането на сайта като цяло, той е много важен! А именно, важно е страница, на която не е имало промени от последното посещение на робот или човек, да дава код 304, което означава, че страницата е останала непроменена. Когато сървърът изпрати този код на клиента, изпълнението на всички PHP скриптове на страницата дори не започва, вместо това страницата се зарежда от кеша, което значително намалява натоварването на сървъра и ускорява зареждането на страницата за потребителя .

    Така, като настроим правилните отговори на нашия сървър, ние убиваме поне пет заека с един камък:

    • Ние ускоряваме зареждането на страницата за посетители (хора).
    • Намаляваме натоварването на сървъра.
    • Резултатите от търсенето (за Yandex със сигурност) показват датата на последната актуализация на страницата, което може да привлече вниманието на потребителя, особено ако датата е скорошна.
    • Страниците на сайта ще участват в сортирането на търсачките по дата.
    • Ускорете значително индексирането на сайта от търсачките!

    По някаква причина за мен последната точка изглежда най-сладка (тъй като засяга SEO и повишава доверието на вашия сайт в търсачките), въпреки че без съмнение останалите точки също са изключително важни.

    Как да конфигурирате 304 и 200 сървърни отговори?

    Вече казахме, че в отговор на заявка за непроменени страници, сървърът трябва да се върне 304 Не е промененои какъв код трябва да върне сървърът, ако клиентът има достъп до страницата за първи път или има достъп до страница, която е променена? В такива случаи сървърът трябва да върне състоянието 200 Добре. Няма нужда да изпращате този код специално, ако всичко е наред със страницата, тогава винаги дава 200.

    Следователно трябва да се погрижим само за кода 304, тъй като сървърът няма да го изпрати без наша намеса. За да направим това, ще ни помогне, както и заглавието Последно модифицирани искане.

    Заглавия Последно модифициран

    Последно модифициране заглавката, която изпращаме с PHP, тази заглавка съдържа точното време, когато страницата е била последно модифицирана (в секунди). За да направите това, се използва общоприетата мярка за измерване на времето: Unix Time Stamp.

    Unix времеви печате броят секунди от началото на Unix епохата: 1 януари 1970 г. Към момента на писане на това, времевият печат на Unix е 1370597447 секунди, което е 06/07/2013 09:30:47 GMT (+00:00).

    Тоест всичко, което трябва да направим, е просто да изпратим PHP хедър с инструкцията Последно модифицирани желана дата:

    Header("Последна промяна: ".gmdate("D, d M Y H:i:s", $last_modified_time)." GMT");

    Където заглавката е конструкция за изпращане на HTTP заглавка, Последно модифициран- какво изпращаме и веднага след двоеточието идва неговата стойност:

    Gmdate("D, d M Y H:i:s", $last_modified_time)." GMT".

    Последната променена стойност е функцията gmdate(), който съдържа променливата, която измислих $last_modified_time(можете да го наречете както и да е). В променлива $last_modified_timeи съдържа времето на последната модификация във формата Времево клеймо на Unix, и функцията gmdate()ни служи, за да приведем датата в правилния вид (средно време по Гринуич).

    За по-голяма яснота, ето един пример за вас: ако сме във функция gmdate()поставете стойността 1365003142 , тогава изходът ще бъде: Сряда, 03 април 2013 г. 15:32:22 ч.

    Сега, след като научихме как работи целият процес, може да възникне въпросът: „Трябва ли ръчно да посочим времето на последната модификация за всяка страница?“ Отговор: "Да!" Лично аз правя точно това - ръчно, най-надеждният вариант. Въпреки това, специално за този блог, предоставих всичко, например, ако на страницата се появи нов коментар, тогава в променливата $last_modified_timeвремето, когато този коментар е добавен, се записва, това се прави, за да могат търсачките да индексират нови коментари и да знаят, че сайтът е „на живо“. Всеки сайт е различен и ще трябва да измислите свой собствен алгоритъм за посочване на датата на последната промяна на страницата или винаги да я посочвате ръчно.

    Още веднъж подчертавам, че моят алгоритъм е следният:

    1) Посочвам ръчно датата на създаване на материала, ако променя нещо в статията (печатни грешки или добавяне), след това отново ръчно въвеждам новото време на последната актуализация.

    2) Ако посетителят добави коментар, тогава в променливата $last_modified_timeавтоматично, без мое знание, се въвежда часът, в който е добавен коментарът, тъй като всъщност това ще бъде датата, на която страницата е последно модифицирана.

    Какво не взех предвид: в дясната колона на сайта имам свежи статии, препоръчителноИ Топ 10. Те се променят постоянно и едновременно за всички страници. Ако всеки път, когато променя дясната колона на сайта, променям (автоматично или ръчно - няма значение) датата на последната промяна на страницата, тогава целият смисъл на това действие ще бъде загубен. Реших, че тези промени трябва да бъдат проследени и взети предвид при уточняване $last_modified_timeне си струва, тъй като те не са от полза за SEO.

    Както писах, не мога да ви кажа как точно да автоматизирате датата на последна промяна на страница, но ще ви кажа как да НЕ го правите!

    Грешки при посочване на датата на последната промяна

    Първото нещо, което може да дойде на ум на повечето хора, е да изпратят датата на последната модификация на файла със съдържанието на страницата в заглавката. Лично моите текстове на статии са във файлове, а не в база данни, така че за мен този метод може да изглежда като чудесен изход, за да не влизам всеки път Времево клеймо на Unixръчно. Но не! Повечето хостове, а може би дори всички, приемат датата на създаването му като дата на последната модификация на файла, те не вземат предвид последващите промени в него.

    Мисля, че разбирате последствията в такива случаи. Един популярен украински хостинг доставчик (и мисля, че не е единственият) в своите ЧЗВ пише нещо като: „Вместо датата на последната модификация на файла, използвайте функцията време(), който връща текущото време във формат на времеви печат на Unix." Това е толкова абсурдно! Просто стреля на място! И този хостинг доставчик се счита за „един от най-добрите“, след като прочетох това, веднага не исках да стана техен клиент.

    Това е просто анти-SEO, помислете сами, идва на страницата на вашата търсачка и изглежда: „Уау! Последната смяна на страницата беше точно сега, така че познах кога да дойда, клас! Няколко дни по-късно той идва на същата страница: „Вижте, току-що се промени отново, това е съвпадение ... Чакай, защо не виждам никакви промени? Добре, ще се върна друг път." Той идва отново: „Е, не, момчета, това вече не е смешно, определено не може да ви се вярва.“ Ето една приказка :)

    И тогава хората се чудят защо резултатите в резултатите от търсенето не са както биха искали, а защото баналното се губи за вашия сайт увереност(Доверие). Точно като в притчата "За овчаря и вълците".

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

    Настройте изпращане на заглавки Последно модифицирантова е точно 1/3 от случая, все още трябва да: дадем отговор на заявката и да включим кеширане на страници. И двете действия няма да отнемат много време и редове код.

    е клиентска заявка към вашия сървър, в която клиентът пита: „промени ли се страницата от последното ми посещение?“. Ако страницата не се е променила, тогава трябва да спрем изпълнението на по-нататъшното зареждане на страницата с командата:

    В същото време тялото на страницата не трябва да започва да се рисува, всичко това се случва ПРЕДИ първото извеждане на нещо на страницата! Заедно с това е необходимо да върнете отговора на сървъра на клиента 304 Не е променено, като по този начин казва, че страницата трябва да бъде взета от кеша. Да минем направо на въпроса:

    If (isset($_SERVER["HTTP_IF_MODIFIED_SINCE"]) && strtotime($_SERVER["HTTP_IF_MODIFIED_SINCE"]) >= $last_modified_time)( header("HTTP/1.1 304 Not Modified"); die; ) header("Last-Modified" : ".gmdate("D, d M Y H:i:s", $last_modified_time)." GMT");

    И така, в първия ред проверяваме с помощта дали заявката HTTP_IF_MODIFIED_SINCE е дошла до нашия сървър и също така незабавно проверяваме броя на секундите във входящия HTTP_IF_MODIFIED_SINCE е по-голям от $last_modified_timeили не? Ако е повече, то датата на последното посещение на клиента е по-късна от датата на последната промяна на страницата, оттук правим чисто логически извод, че страницата не е променяна, което означава, че изпращаме отговора на сървъра в втория ред 304 Не е промененои ред 3 убиваме (спираме) изпълнението на всички скриптове на страницата. С други думи, спираме да го изтегляме.

    Ако клиентът не ни е изпратил HTTP_IF_MODIFIED_SINCE заявка или последното му посещение е било по-рано от датата, на която страницата е била последно модифицирана, тогава ние (по подразбиране) връщаме кода 200 Добреи на петия ред му изпращаме ДЕЙСТВИТЕЛНАТА дата на смяна на страницата, вместо тази, която е имал.

    За IF_MODIFIED_SINCE и как е подреден кодът, той ви каза всичко, от което се нуждаете, с изключение на това, което прави функцията strtotime ():

    Strtotime($_SERVER["HTTP_IF_MODIFIED_SINCE"])

    Един внимателен и проницателен читател може вече да се досети, че тази функция преобразува обикновена дата в времеви печат на Unix, тъй като ние задаваме променливата $last_modified_time в нея и следователно, за сравнение, трябва да намалим всичко до общ знаменател на общо измерване система.

    И накрая, просто трябва да активираме кеширането, това се прави с помощта на следните редове:

    Header("CacheControl: public"); header("Изтича: " . date("r", time()+10800));

    Където числото 10800 е времето (в секунди), за което искаме да кешираме страницата, тоест в този пример за 3 часа.

    И както винаги, за тези, които нищо не разбират, публикувам всичко изцяло, както е подредено в моя блог:

    = $last_modified_time)( заглавие("HTTP/1.1 304 не е променено"); die; /* убийте всичко отдолу */) header("Последна промяна: ".gmdate("D, d M Y H:i:s", $last_modified_time)." GMT"); ?> И останалата част от страницата отиде

    Мисля, че може би сте забелязали, че цялата тази история с Last-modified е аналог на тага в - . Така че lastmod има опознавателен и консултативен характер и никой няма да спори с отговорите на вашия сървър. Естествено, не е необичайно lastmod в картата на сайта да е различен от заглавката LastModified, но отсега нататък те трябва да са еднакви за вас! В края на краищата, сега сме изучавали някаква наука, а не за да станем като нещастни уебмастъри, които не са напреднали по-далеч от sitemap.xml.

    Лично аз в момента изобщо не използвам етикета lastmod в моите карти на сайтове, може би ще помисля по-късно, но засега не виждам смисъл да бъда толкова педантичен с правилните заглавия Последно модифициран :)

    И накрая, проверете коректността Последно модифицирани можете с тази услуга: щракнете върху .

    Благодаря ви за вниманието и специални благодарности за непрекъснато нарастващия брой абонати, за мен това е най-големият стимул да пиша по-често в блога. Така че, ако все още не сте се регистрирали за нови статии, добре дошли!



    Зареждане...
    Връх