Останнє змінення цієї сторінки 1576. Блог, в якому є багато цікавої інформації…. Прискорення індексації пошуковими системами

HTTP заголовок Last-Modified (останні зміни)передає клієнту час останньої змінидокумента (Веб-сторінки). Клієнт (браузер або пошуковий робот) надсилає серверу заголовок « If-Modified-Since» і якщо дата останньої зміни сторінки збігається, сервер повертає заголовок « 304 Відмінно» та не завантажує сторінку. Якщо час останньої зміни відрізняється (або last modified header не налаштований), сервер повертає заголовок. 200 OK» та завантажує сторінку. Тобто замість повторного перезавантаження сторінки та оновлення кешу, клієнт отримує лише заголовок 304. Клієнт заощаджує трафік, а сервер віддає менше даних - взаємна економія.

Але навіщо була б ця стаття, якщо не розповісти про користь, яку налаштування заголовка Last-Modified несе для , а якщо точніше для прискорення індексації сайту. Неважко здогадатися, що 10 сторінок сайту будуть проіндексовані швидше ніж 1000. Той самий принцип, який дозволяє оптимізувати завантаження сторінок працює і для індексації. Пошуковій системі не потрібно індексувати 1000 сторінок, щоб знайти 10 нових сторінок. Завдяки останнім зміненим, ми залишаємо для робота тільки нові сторінки (або оновлені). Робот приходить на сайт і бере спочатку те, що потрібно, а потім все інше.

Налаштування заголовка Last-Modified

Слідкуйте за коректністю http-заголовків. Зокрема, важливо зміст відповіді, який сервер віддає на запит «if-modified-since». Заголовок Last-Modified має віддавати коректну дату останньої зміни документа. Навіть якщо сервер не видає дату останньої модифікації документа (last-modified), ваш сайт буде проіндексовано. Однак у цьому випадку слід враховувати наступне: - у результатах пошуку не буде відображатися дата поряд зі сторінками вашого сайту; - при сортуванні за датою сайт не буде видно більшості користувачів; - Робот не зможе отримати інформацію про те, чи оновилася сторінка сайту з моменту останнього індексування. Оскільки кількість сторінок, одержуваних роботом з сайту за один захід, обмежена, сторінки, що змінилися, будуть переіндексуватися рідше. Переконайтеся, що ваш веб-сервер підтримує заголовок HTTP "If-Modified-Since". Цей заголовок дозволить веб-серверу повідомляти Google, чи змінився контент сайту після останнього сканування. Підтримка цієї функції скорочує витрати та навантаження на смугу пропускання.

Ось приклади того, як налаштувати відправлення заголовка last-modified та правильну обробку If-Modified-Since.

Як налаштувати meta Last-Modified для статичних html сторінок

Як налаштувати Last-Modified у php

= $LastModified_unix) ( header($_SERVER["SERVER_PROTOCOL"] . " 304 Not Modified"); exit; ) header("Last-Modified: ". $LastModified); ?>

Як настроїти Last-Modified .htaccess

RewriteRule .* - RewriteRule .* -

Як налаштувати Last-Modified nginx + php

location ~ .php$ ( … if_modified_since off; fastcgi_pass fcgi; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /<путь >/web$fastcgi_script_name; … fastcgi_pass_header Last-Modified; include fastcgi_params; )

Перевірити Last-Modified

Коли передача заголовка клієнту налаштована, не зашкодить перевірка last modifiedна коректність. Перевірити Last-Modified на власному або сторонньому сайті можна через онлайн-сервіси.

Або зробити свою перевірку на коректну обробку заголовка Last-Modified:

Налаштування заголовка Last-Modifiedі обробка заголовка If-Modified-Since буде вкрай корисна будь-якому більш-менш великому сайту. Швидкість обробки сторінок сайту може стати значною. Порівняно нескладне налаштування не створить проблем, тим більше, що для популярних CMS на зразок joomla, wordpress, modx і т.д. Існують готові рішення.

В області пошукової оптимізації сайтів (SEO) гуляє дуже багато різних міфів. Якісь з них мають під собою основу, які узялися взагалі не зрозумій звідки. У цій замітці розглянемо один із них - використання заголовка відповіді last-Modified.

Якийсь час тому до нас потрапив якийсь документ, під назвою «Рекомендації Ingate для веб студій по сайтах, що просуваються». І одна з «рекомендацій» була такою:

Після редизайну або на новому сайті, що розробляється, повинна бути прописана дата останньої модифікації сторінок сайту (Last Modified)

Для додавання на сайт на PHP інформаціїпро дату останньої модифікації сторінок необхідно на початок вихідного кодукожної сторінки вставити скрипт


header ("Last-Modified: " . date("D, d M Y H:i:s", time()) . " GMT");
?>

Саме ця дика ахінея, ця несусвітня нісенітниця і відверто маячний код і спонукали мене написати цю замітку. Тут я спробую пояснити, що таке Last-Modified, навіщо він потрібен і як його використовують браузери та пошукові машини.

Що таке Last-Modified

Веб-сервер під час передачі інформації клієнту (браузери чи пошуковому роботу) повідомляє досить багато додаткових даних. Їх можна подивитися в консолі браузера, наприклад:

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

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

То чи потрібен Last-Modified чи ні?

Загалом потрібен. Але важливо розуміти, що не сам заголовок грає якусь роль, а весь сценарій умовних запитів, який має бути реалізований сайтом до кінця. Саме в цьому випадку ми матимемо високу швидкість індексації сайту.

Але найчастіше реалізувати це у готовій CMS буває дуже важко. Можливо для цього знадобляться досить значні зміни коду самої CMS.

Хоча для ряду CMS можна реалізувати включенням кешування сторінок. Якщо CMS кешує сторінки, створюючи та віддаючи фактично статичні файли, то сам веб-сервер правильно відповідатиме на умовні запити. Наприклад, у WordPress це можна реалізувати за допомогою плагіна WP Super Cache:

Перевіримо його у роботі. Я увімкнув цей плагін, відкрив браузер в анонімному режимі та зробив два запити однієї сторінки. Добре видно, що друга відповідь правильна - 304 Not Modified:

Замість ув'язнення

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

Ну і менше слухайте сеошників, які не знають елементарних основ роботи інтернету.

Один із етапів оптимізації інтернет-сайту для його правильної роботи та успішного просування – оптимізація на стороні сервера. Серед інших моментів - налаштування правильної відповіді сервера на запит "Last-Modified". Правильне налаштування цього параметра може вплинути на збільшення швидкості завантаження сайту і позитивно позначиться на його індексації пошуковими роботами.

Що таке Last-Modified і навіщо він потрібний?

Як видно з назви, заголовок Last-Modified говорить клієнту (відвідувачу сайту) про час останньої зміни тієї чи іншої сторінки сайту. Якщо як відвідувач сайту виступає пошуковий робот і на сайті (на сервері) не налаштований (або налаштований неправильно) відповідь Last-Modified на запитуваний документ або сторінку, пошуковому роботі нічого не залишається, як проводити індексацію всіх сторінок інтернет-ресурсу знову і знову при кожному відвідуванні, таким чином, створюючи певне навантаження на сервер, розташований на хостинг-майданчику. А якщо кількість сторінок сотні чи навіть тисячі? Залежно від характеристик та можливостей та сервера, існує ймовірність «нарватися» на якусь помилку з боку хостингу. На додаток до цього слід зазначити, що пошуковий робот має ліміт на кількість сторінок, що індексуються «за раз», тому в разі відсутності правильного налаштуваннязаголовка Last-Modified, ми ризикуємо тим, що незмінені сторінки проіндексуються роботом, а потрібні нові сторінки — ні.

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

На додаток до вищезазначеного, згадаємо рекомендації Яндекса: «Робот не зможе отримати інформацію про те, чи оновилася сторінка сайту з моменту останнього індексування. Оскільки кількість сторінок, одержуваних роботом із сайту за один захід, обмежена, сторінки, що змінилися, переіндексуватимуться рідше» .

РАЗОМ:важливим призначенням заголовка «Last-Modified» є інформування відвідувача сайту та пошукового роботапро дату останньої модифікації будь-якого документа.

Для чого потрібне правильне налаштування Last-Modified?

За допомогою правильного настроювання відповіді сервера Last-Modified ми зможемо досягти відразу кілька позитивних результатівдля нашого сайту:

  • Збільшується швидкість завантаження сторінки сайту для людей:у випадку, якщо сторінка вже була відвідана користувачем і на момент наступного відвідування сторінка не змінювалася, браузер відвідувача не заново завантажуватиме сторінку, а відобразить її збережену в кеші копію;
  • Знижується навантаження на хостинг-майданчик (сервер):за такого алгоритму роботи сервер завантажуватиметься значно менше за рахунок необхідності передачі відвідувачеві сайту обсягу тільки змінених сторінок;
  • Відображається дата останнього документа у пошуковій видачі:цей факт може залучати відвідувачів до вашого сайту, якщо відображатиметься «свіжа» дата;
  • Сортування за датою:сторінки сайту візьмуть участь у сортуванні за датою у пошуковій видачі;
  • Істотно прискорюється індексація сайту пошуковими роботами:за рахунок швидкої відповіді вашого сайту про дату сторінок, що скануються, старі (вже проіндексовані) сторінки будуть «відкидатися в бік», поступаючись місцем «свіжим» документам. Цей пункт є найбільш значущим під час просування сайту, т.к. висока швидкість індексації підвищує рівень довіри до сайту пошукових роботів.

Як перевірити, чи правильно настроєно Last-Modified?

Один із сервісів, на якому можна перевірити правильність (та й взагалі існування) налаштованої відповіді сервера Last-Modified – однойменний last-modified.com

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

Налаштовуємо Last-Modified

Розглянемо реалізацію відповіді HTTP-заголовка Last-Modified на PHP.

В інтернеті дуже часто зустрічаються такі рекомендації щодо налаштування Last-Modified:

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

Звернемося за допомогою до вищезазначеного ресурсу last-modified.com. На ньому також представлений варіант реалізації заголовка HTTP Last-Modified на PHP. Виглядає він так:

$LastModified_unix = 1294844676;

$IfModifiedSince = false;



if ($IfModifiedSince && $IfModifiedSince >= $LastModified_unix) (
exit;
}

Давайте розберемо роботу цього коду. Змінна $LastModified_unixзадається вручну у форматі Unix Time Stamp(кількість секунд, що пройшли з початку епохи Юнікс - з 1 січня 1970).

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

Далі: отримуємо час останньої зміни сторінки, перевіряємо наявність If-Modified-Since, якщо є - віддаємо 304 Відміннота зупиняємо роботу скрипта. Інакше генеруємо заголовок Last-Modifiedі віддаємо сторінку цілком.

У зазначеному вище варіанті пропонується задавати час $LastModified_unixвручну. А що робити, якщо на сайті багато сторінок? Для цього трохи «модернізуємо» скрипт, замінивши в ньому лише один перший рядок:

$LastModified_unix = strtotime(date("D, d MYH:i:s", filectime($_SERVER["SCRIPT_FILENAME"]))));
$LastModified = gmdate("D, d MY H:i:s \G\M\T", $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);

У оновленому варіанті перший рядок коду перетворює текстове подання дати на англійськоюу мітку у форматі Unix Time Stamp, таким чином, використовуючи автоматично обчислений час зміни поточної сторінки сайту.

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

Допоможемо з налаштуванням Last-Modified!

Почніть із простого дзвінкау «Т-Дизайн»! Наш телефон - 8 499 340-17-82 - працює в режимі нон стоп, щоб ви могли оперативно отримувати цікаву для вас інформацію щодо вирішення завдань розвитку та підтримки вашого сайту. Або пишіть на електронну пошту. Ми проконсультуємо з усіх питань та підберемо оптимальний тарифдля вашої компанії.

Syntax

If-Modified-Since: , ::GMT

Directives

Один з "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", або "Sun" (case-sensitive). 2 digit day number, e.g. "04" або "23". Один з "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ( case sensitive). 4 digit year number, e.g. "1990" або "2016". 2 digit hour number, e.g. "09" або "23". 2 digit minute number, e.g. "04" або "59". 2 digit second number, e.g. "04" або "59". GMT

Greenwich Mean Time. HTTP datas always expressed in GMT, never in local time.

Examples

If-Modified-Since: Wed, 21 Oct 2015 07:28:00 GMT

Specifications

Specification Title
RFC 7232, секція 3.3: If-Modified-Since Hypertext Transfer Protocol (HTTP/1.1): Conditional Requests

Browser compatibility

Компактність таблиці в цій сторінці генерується з структурованих даних. Якщо ви знайдете, щоб дізнатися про ваші дані, клацніть на https://github.com/mdn/browser-compat-data і пишуть.

Update compatibility data on GitHub

DesktopMobile
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome для AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung Internet
If-Modified-SinceChrome Full support YesEdge Full support 12Firefox Full support YesIE Full support YesOpera Full support YesSafari Full support YesWebView Android Full support YesChrome Android Full support YesFirefox Android Full support YesOpera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support Yes

Заголовки Last-Modified та If-Modified-Since для WordPress

Мало хто звертає увагу на заголовки HTTP Last-Modifiedі If-Modified-Sinceпри оптимізації свого сайту, а дарма! Важливо, щоб сторінка, контент якої не змінювався з останнього візиту пошукового робота, віддавала 304 код, який власне і говорить про те, що дана конкретна сторінка нічим не доповнювалася – Ви не редагували та не доповнювали текст, до цього запису не додавалися коментарі тощо. п.

Якщо цей http-заголовок відсутній, то в Яндексі, при сортуванні результатів за датою, сайт не буде видно більшості користувачів.

Саме тому важливо, щоб Ви не тільки його правильно налаштували, але й щоразу, коли редагуєте запис, оновлювали дату на поточну. Це потрібно буде робити вручну.

З коментарями простіше: коли відвідувач додає коментар, то змінну $last_modified_timeчас додавання коментаря заноситься автоматично - це буде датою останньої зміни сторінки.

Навіщо потрібні заголовки Last-Modified та If-Modified-Since?

1. Коли сервер віддає такий код, виконання всіх PHP сценаріїв на сторінці навіть не запускається. Сторінка завантажується з кешу пошуку, а це, як Ви розумієте, дуже суттєво знижує навантаження на сервер до більшої радості Вашого хостера та прискорює завантаження сторінки у відвідувача, що теж не може не тішити.

Як це відбувається?

Скануючи інтернет, павуки Google та Яндекса зберігають у своїй базі копію кожного сайту. Ця копія служить якимось зразком для порівняння: чи все як і раніше, чи відбулися зміни. І якщо не налаштовані заголовки Last-Modified і If-Modified-Since або неправильно налаштовані, нові сторінки сайту проходять індексацію, а головна в кеші пошукових систем довго не оновлюється, як не оновлюється і стрічка коментарів.

Але для часто оновлюваних сторінок (стрічок, що оновлюються багато разів на добу, активно коментуються блогів і т.п.) у нього є один недолік: інформація в кеші занадто швидко застаріває і людина, навіть перезавантажуючи сторінку, не бачить свіжих новин, не бачить нових коментарів. Але це ще півбіди. Біда в тому, що цього робот теж не бачить, якщо тільки не включений правильний заголовок Last-Modified.

header("Last-Modified:".

Якщо Ваш сайт оновлюється часто (наприклад, Ваші записи часто коментують) можна вимкнути кешування наступним набором заголовків:

header("Expires: ".gmdate("D, d M Y H:i:s", time() + 7200).

Це означає, що дійсність збереженої копії повинна перевірятися ще раз при кожному запиті.

Як працює кешування у браузерах?

Якщо воно не заборонено викликом функції no_cache , то Firefox і IE сторінка зберігається в кеші, при всіх наступних запитах видається саме вона.

Щоб оновити сторінку та отримати її свіжу версію, потрібно натиснути клавішу клавіш Ctrl+F5, звичайна кнопка «Оновити» (F5) не спрацьовує. І треба сказати, документи в кеші IE можуть зберігатися дуже довго.

У Опері сторінка кеш очищається після натискання кнопки «Оновити» або клавіші F5. Поєднання CRTL+F5 в Опері - перезавантаження всіх відкритих вкладок, Як Ви розумієте, якщо Ви їх багато відкривали – у процесі очікування у Вас може відрости борода.

Якщо заборонити кешування сторінки функцією no_cache , то Опера та Firefox при зверненні до такої сторінки використовують механізм із заголовком If-Modified-Since . Таким чином, кешування відбувається, але браузер запитує сервера, чи змінилася сторінка насправді, чи ні – це правильна постановка питання.

Отже, потрібно підключити обробку цього параметра. Я не розписуватиму, що і яка функція означає, просто наведу код, який коректно віддає заголовки і не викликає конфліктів на більшості хостингів, з якими мені доводилося працювати. Ця конструкція працює на sweb.ru, eomy.net, timeweb.ru, fastvps.ru, startlogic.com

header("Expires: ".gmdate("D, d M Y H:i:s", time() + 7200).
header("Cache-Control: no-cache, must-revalidate");
$mt = filemtime($file_name);
$mt_str = gmdate("D, d MY H:i:s ")."GMT";
if (isset($_SERVER["HTTP_IF_MODIFIED_SINCE"]) &&
strtotime($_SERVER["HTTP_IF_MODIFIED_SINCE"]) >= $mt)
(header("HTTP/1.1 304 Not Modified");
die;
}
header("Last-Modified: ".$mt_str);
echo $text;
header("Vary: Accept-Encoding");
header("Accept-Encoding:gzip,deflate,sdch");
?>

Таким чином, все, що Вам потрібно зробити, це скопіювати цей код і додати його до файлу header.phpВашої теми оформлення НАД . Тобто. цей код - знаходиться в самому верху файлу ДО решти коду


Увага!Перш ніж щось додавати – збережіть цей файл у себе на комп'ютері, щоб можна було відновити початковий варіант, якщо ваш не дозволяє таку конфігурацію заголовків.

Перевіряємо результат на сервісі перевірки заголовків Last-Modified та If-Modified-Since http://last-modified.com/ru/if-modified-since.html


  • Якщо результат позитивний – втираємо піт з чола та йдемо пити чай.
  • Якщо результат негативний, ту саму конструкцію можна додати до файлу index.phpу корені Вашого WordPress (з цим я зіткнулася на хостингу timeweb.ru). Так само, вище всього іншого в ньому. Тільки не забудьте про це, коли оновлюватимете – індексний файл перезапишеться у стандартному його вигляді.

Вуаль! Правильно настроївши заголовки Last-Modified та If-Modified-Since, ми отримали купу бонусів:

  • Збільшили швидкість завантаження сторінок, що важливо для робота Google та приємно для людей.
  • Зменшили навантаження на сервер, чим порадували хостера.
  • У пошуковій видачі Яндекса відображатиметься дата останнього оновленнясторінки, що у окремих випадках дуже актуально людей, тому опосередковано це позитивно позначиться на поведінкових чинниках.
  • Сторінки нашого сайту братимуть участь у сортуванні пошукових систем за датою – так-так, цим користуються просунуті користувачі.
  • І, як наслідок всього вищесказаного, дуже прискориться індексування нашого сайту пошуковими системами.



Top