Cette page a été modifiée pour la dernière fois en 1576. Un blog qui contient beaucoup d'informations intéressantes…. Accélérer l'indexation par les moteurs de recherche

En-tête HTTP Last-Modified (dernière modification) envoie le temps au client dernier changement documents (page Web). Le client (navigateur ou crawler) envoie l'en-tête " Si-Modifié-Depuis' et si la date de dernière modification de la page correspond, le serveur renvoie le titre ' 304 Non modifié' et ne charge pas la page. Si l'heure de la dernière modification est différente (ou si le dernier en-tête modifié n'est pas configuré), le serveur renvoie l'en-tête " 200 D'accord' et charge la page. Autrement dit, au lieu de recharger la page et de mettre à jour le cache, le client ne reçoit que rubrique 304. Le client économise du trafic et le serveur donne moins de données - des économies mutuelles.

Mais, pourquoi cet article serait-il, si ce n'est pour parler des avantages que la définition de l'en-tête Last-Modified a pour, ou plutôt, pour accélérer l'indexation du site. Il est facile de deviner que 10 pages d'un site seront indexées plus vite que 1000. Le même principe qui permet d'optimiser le chargement des pages fonctionne pour l'indexation. Un moteur de recherche n'a pas besoin d'indexer 1000 pages pour trouver 10 nouvelles pages. Grâce à la dernière modification, nous ne laissons que de nouvelles pages (ou mises à jour) pour le robot. Le robot arrive sur le site et prend d'abord ce dont il a besoin, puis tout le reste.

Définition de l'en-tête de dernière modification

Assurez-vous que vos en-têtes http sont corrects. En particulier, le contenu de la réponse que le serveur donne à la requête "if-modified-since" est important. L'en-tête Last-Modified doit renvoyer la date correcte à laquelle le document a été modifié pour la dernière fois. Même si le serveur ne renvoie pas la date de la dernière modification du document (last-modified), votre site sera indexé. Cependant, dans ce cas, il faut tenir compte des éléments suivants : - la date ne s'affichera pas à côté des pages de votre site dans les résultats de recherche ; - lors d'un tri par date, le site ne sera pas visible pour la plupart des utilisateurs ; - le robot ne pourra pas savoir si la page du site a été mise à jour depuis la dernière indexation. Et comme le nombre de pages que le robot reçoit du site en une seule visite est limité, les pages modifiées seront réindexées moins fréquemment. Assurez-vous que votre serveur Web prend en charge l'en-tête HTTP "If-Modified-Since". Cet en-tête permettra au serveur Web d'indiquer à Google si le contenu du site a changé depuis la dernière fois qu'il a été exploré. La prise en charge de cette fonctionnalité réduit la surcharge et l'utilisation de la bande passante.

Voici des exemples de configuration de l'envoi de l'en-tête de dernière modification et de la gestion appropriée de If-Modified-Since.

Comment configurer meta Last-Modified pour les pages html statiques

Comment configurer Last-Modified en php

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

Comment configurer le fichier .htaccess de dernière modification

RéécrireRègle .* - RéécrireRègle .* -

Comment configurer nginx + php Last-Modified

emplacement ~ .php$ ( ... if_modified_since off; fastcgi_pass fcgi; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /<путь >/web$fastcgi_script_name ; ... fastcgi_pass_header Dernière modification ; inclure fastcgi_params ; )

Vérifier la dernière modification

Lorsque l'en-tête passant au client est configuré, cela ne fait pas de mal dernière vérification modifiée pour la justesse. Vous pouvez vérifier Last-Modified sur votre propre site ou sur un site tiers via des services en ligne.

Ou effectuez votre propre vérification pour le traitement correct de l'en-tête Last-Modified :

Définition de l'en-tête de dernière modification et le traitement de l'en-tête If-Modified-Since sera extrêmement utile pour tout site plus ou moins grand. La vitesse de traitement des pages d'un site peut devenir importante. Une configuration relativement simple ne créera pas de problèmes, d'autant plus que pour les CMS populaires comme joomla, wordpress, modx, etc. il existe des solutions toutes faites.

Il existe de nombreux mythes différents dans le domaine de l'optimisation des moteurs de recherche (SEO). Certains d'entre eux ont une base, lesquels n'ont pas compris où. Dans cette note, nous considérerons l'un d'entre eux - l'utilisation de l'en-tête de réponse last-Modified.

Il y a quelque temps, nous sommes tombés sur un document intitulé "Ingate's Guidelines for Web Studios on Promoted Sites". Et l'une des "recommandations" était la suivante :

Après une refonte ou sur un nouveau site en cours de développement, la date de la dernière modification des pages du site (Last Modified) doit être inscrite

A ajouter au site Informations PHP la date de la dernière modification des pages est nécessaire au tout début code source chaque page insère un script


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

C'est ce non-sens sauvage, ce code complètement absurde et franchement délirant qui m'a poussé à écrire cette note. Ici, je vais essayer d'expliquer ce qu'est Last-Modified, pourquoi il est nécessaire et comment les navigateurs et les moteurs de recherche l'utilisent.

Quelle est la dernière modification

Le serveur Web, lors de la transmission d'informations au client (navigateurs ou robot de recherche), rapporte pas mal de données supplémentaires. Ils peuvent être visualisés dans la console du navigateur, par exemple :

configurer le serveur pour émettre des en-têtes de réponse corrects (par exemple, si la page n'existe pas, émettre une erreur 404, et si une requête If-Modified-Since est reçue, émettre un code 304 si la page n'a pas changé depuis la date spécifiée dans la demande).

Vous pouvez également voir que si le serveur ne répond d'aucune façon à une requête GET conditionnelle, alors ce n'est pas différent d'une requête normale. C'est-à-dire que l'en-tête Last-Modified avec l'heure actuelle, et également mal formé (bonjour Integate!) N'est pas du tout nécessaire!

Alors est-ce que Last-Modified est nécessaire ou non ?

Généralement nécessaire. Mais il est important de comprendre que ce n'est pas l'en-tête lui-même qui joue un rôle, mais tout le scénario de requêtes conditionnelles, qui doit être mis en œuvre par le site jusqu'au bout. C'est dans ce cas que l'on obtiendra une grande vitesse d'indexation du site.

Mais il est souvent très difficile d'implémenter cela dans un CMS fini. Cela nécessitera peut-être des changements assez importants dans le code du CMS lui-même.

Bien que pour un certain nombre de CMS, cela puisse être implémenté en activant la mise en cache des pages. Si le CMS met en cache des pages en créant et en servant des fichiers pratiquement statiques, le serveur Web lui-même répondra correctement aux requêtes conditionnelles. Par exemple, dans WordPress, cela peut être fait en utilisant le plugin WP Super Cache :

Vérifions-le au travail. J'ai activé ce plugin, ouvert le navigateur en mode anonyme et effectué deux requêtes pour la même page. On voit clairement que la deuxième réponse est correcte - 304 Not Modified :

Au lieu d'une conclusion

Ainsi, nous avons compris l'en-tête Last-Modified. Tout d'abord, il doit transmettre des informations sur la date et l'heure auxquelles le document a été effectivement modifié. Deuxièmement, la réaction du serveur à la requête conditionnelle avec l'en-tête If-Modified-Since est extrêmement importante.

Bon, écoutez moins les référenceurs qui ne connaissent pas les bases élémentaires d'Internet.

Une des étapes de l'optimisation d'un site Internet pour son bon fonctionnement et une promotion réussie est l'optimisation côté serveur. Entre autres choses - définir la réponse correcte du serveur à la requête "Last-Modified". Un réglage correct de ce paramètre peut affecter l'augmentation de la vitesse de chargement du site et affectera positivement son indexation par les robots de recherche.

Qu'est-ce que la dernière modification et pourquoi est-elle nécessaire ?

Comme son nom l'indique, l'en-tête Last-Modified indique au client (visiteur du site) la dernière fois qu'une page particulière du site a été modifiée. Si un robot de recherche agit en tant que visiteur du site et que le site (sur le serveur) n'est pas configuré (ou configuré de manière incorrecte) avec la réponse Last-Modified au document ou à la page demandé, le robot de recherche n'a d'autre choix que d'indexer toutes les pages de la ressource Internet encore et encore à chaque visite, créant ainsi une certaine charge sur le serveur situé sur le site d'hébergement. Et si le nombre de pages est de centaines voire de milliers ? Selon les caractéristiques et les capacités du serveur, il est possible de "se heurter" à une sorte d'erreur de la part de l'hébergement. En plus de cela, il convient de noter que le robot de recherche a une limite sur le nombre de pages indexées "à la fois", donc si l'en-tête Last-Modified n'est pas défini correctement, nous risquons que les pages inchangées soient indexées par le robot, mais pas les nouvelles pages dont nous avons besoin.

Basé sur la spécification RFC 2616 décrivant le protocole de transfert hypertexte HTML, un client peut "demander" au serveur si une page a changé depuis une certaine date en envoyant au serveur un en-tête "If-Modified-Since". Si la page demandée n'a pas changé, le serveur renverra un en-tête "304 Not Modified" et le navigateur ne chargera pas la page et le serveur Web n'enverra pas beaucoup de données. Sinon (si la page du site a changé depuis la requête précédente), le serveur renverra une réponse « 200 OK » et le code de la page elle-même.

En plus de ce qui précède, nous mentionnerons les recommandations de Yandex : « Le robot ne pourra pas savoir si la page du site a été mise à jour depuis la dernière indexation. Et comme le nombre de pages que le robot reçoit du site en une seule visite est limité, les pages modifiées seront réindexées moins souvent.

TOTAL: Un objectif important de l'en-tête "Last-Modified" est d'informer le visiteur du site et robot de recherche date de la dernière modification de tout document.

À quoi sert le paramètre Last-Modified ?

En configurant correctement la réponse du serveur Last-Modified, nous pouvons obtenir plusieurs résultats positifs pour notre site :

  • Augmente la vitesse de chargement des pages du site Web pour les personnes : si la page a déjà été visitée par l'utilisateur et que la page n'a pas changé lors de la prochaine visite, le navigateur du visiteur ne rechargera pas la page, mais affichera sa copie en cache ;
  • La charge sur le site d'hébergement (serveur) est réduite : avec cet algorithme de travail, le serveur chargera beaucoup moins en raison de la nécessité de transférer le volume des pages uniquement modifiées au visiteur du site ;
  • La date du dernier document dans les résultats de la recherche s'affiche : ce fait peut attirer des visiteurs sur votre site si une date « fraîche » est affichée ;
  • Trier par date: les pages du site seront triées par date dans les résultats de recherche ;
  • L'indexation du site par les robots de recherche est nettement accélérée : en raison de la réponse rapide de votre site sur la date des pages numérisées, les anciennes pages (déjà indexées) seront "jetées", laissant la place à des documents "frais". Cet élément est le plus important lors de la promotion du site, car. une vitesse d'indexation élevée augmente le niveau de confiance dans le site parmi les robots de recherche.

Comment vérifier si Last-Modified est configuré correctement ?

L'un des services sur lequel vous pouvez vérifier l'exactitude (et même l'existence) de la réponse du serveur Last-Modified configuré est l'éponyme last-modified.com

Dans le champ de saisie, vous devez écrire l'adresse de votre site ou d'une page spécifique et cliquer sur le bouton "Vérifier". Le résultat du service sera une démonstration de la réponse de votre site à la demande des en-têtes "Last-Modified" et "304 Not Modified". Un exemple d'un tel contrôle :

Configuration de la dernière modification

Jetons un coup d'œil à l'implémentation par PHP de la réponse d'en-tête HTTP Last-Modified.

Sur Internet, il existe très souvent de telles recommandations pour la mise en place de Last-Modified :

On a envie de s'exclamer : "Nous n'avons pas besoin d'un tel hockey !" Et voyons pourquoi. En réponse à une demande de l'utilisateur, la fonction gmdate nous reviendra date actuelle Heure moyenne de Greenwich (GMT). Et cela se produira à chaque fois à chaque demande d'un utilisateur ou d'un robot de recherche - le serveur nous renverra exactement le sien date actuelle. Il s'avère que chaque fois que les moteurs de recherche visitent votre site, ils verront que la page demandée vient d'être mise à jour. Cela ne peut être "utile" que quelques fois... Au bout d'un moment, le moteur de recherche se rendra compte qu'il est "dupé" et perdra toute confiance en votre site. En conséquence, une telle implémentation ne nous convient pas.

Passons à la ressource ci-dessus pour obtenir de l'aide. dernière-modification.com. Il montre également une implémentation PHP de l'en-tête HTTP Last-Modified. Il ressemble à ceci :

$LastModified_unix = 1294844676;

$IfModifiedSince = faux ;



si ($IfModifiedSince && $IfModifiedSince >= $LastModified_unix) (
sortie;
}

Voyons comment fonctionne ce code. Variable $LastModified_unix défini manuellement au format Horodatage Unix(le nombre de secondes qui se sont écoulées depuis le début de l'ère Unix - depuis le 1er janvier 1970).

Fonction gmdate renvoie l'heure GMT actuelle au format Jour, JJ Lun ANNEE HH:MM:SS GMT.

Ensuite : obtenir l'heure de la dernière modification de la page, vérifier la présence Si-Modifié-Depuis s'il y a - donner 304 Non modifié et arrêter le script. Sinon, nous générons un en-tête Dernière modification et donner toute la page.

Dans l'option ci-dessus, il est proposé de régler l'heure $LastModified_unix manuellement. Mais que se passe-t-il si le site a beaucoup de pages ? Pour ce faire, nous "modernisons" un peu le script en remplaçant uniquement la première ligne de celui-ci :

$LastModified_unix = strtotime(date("D, d M Y H:i:s", filectime($_SERVER["SCRIPT_FILENAME"])));
$LastModified = gmdate("D, d M Y H:i:s \G\M\T", $LastModified_unix);
$IfModifiedSince = faux ;

si (isset($_ENV["HTTP_IF_MODIFIED_SINCE"]))
$IfModifiedSince = strtotime(substr ($_ENV["HTTP_IF_MODIFIED_SINCE"], 5));

si (isset($_SERVER["HTTP_IF_MODIFIED_SINCE"]))
$IfModifiedSince = strtotime(substr ($_SERVER["HTTP_IF_MODIFIED_SINCE"], 5));

si ($IfModifiedSince && $IfModifiedSince >= $LastModified_unix) (
header($_SERVER["SERVER_PROTOCOL"] . " 304 Not Modified");
sortie;
}

header("Last-Modified : ". $LastModified);

Dans la version mise à jour, la première ligne de code convertit la représentation textuelle de la date en anglais en une étiquette au format Horodatage Unix, utilisant ainsi le temps de changement calculé automatiquement de la page courante du site.

Tout est prêt ! Il ne nous reste plus qu'à coller le code résultant dans la section ... chaque page du site et profitez de la grande vitesse de chargement des pages et de leur indexation par les robots de recherche.

Laissez-nous vous aider à configurer Last-Modified!

Commencez par un simple appel dans "T-Design" ! Notre téléphone est 8 499 340-17-82 - fonctionne en mode sans arrêt afin que vous puissiez recevoir rapidement les informations qui vous intéressent pour résoudre les problèmes de développement et de support de votre site. Ou écrire à e-mail. Nous vous conseillerons sur toutes les questions et choisir le meilleur tarif pour votre entreprise.

Syntaxe

Si-Modifié-Depuis : , ::GMT

Directives

L'un des "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" ou "Sun" (sensible à la casse). Numéro du jour à 2 chiffres, par ex. "04" ou "23". L'un des "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ( sensible aux majuscules et minuscules). Numéro de l'année à 4 chiffres, par ex. "1990" ou "2016". Nombre d'heures à 2 chiffres, par ex. "09" ou "23". Nombre de minutes à 2 chiffres, par ex. "04" ou "59". Deuxième chiffre à 2 chiffres, par ex. "04" ou "59". GMT

Méridien de Greenwich. Les dates HTTP sont toujours exprimées en GMT, jamais en heure locale.

Exemples

Si-Modifié-Depuis : Mer, 21 Oct 2015 07:28:00 GMT

Caractéristiques

spécification Titre
RFC 7232, section 3.3 : Si-Modifié-Depuis Protocole de transfert hypertexte (HTTP/1.1) : requêtes conditionnelles

Compatibilité du navigateur

Le tableau de compatibilité de cette page est généré à partir de données structurées. Si vous souhaitez contribuer aux données, veuillez consulter https://github.com/mdn/browser-compat-data et envoyez-nous une demande d'extraction.

Mettre à jour les données de compatibilité sur GitHub

BureauMobile
ChromebordFirefoxInternet ExplorerOpérasafarivue Web AndroidChrome pour AndroïdFirefox pour AndroïdOpéra pour AndroidSafari sur iOSInternet Samsung
Si-Modifié-DepuisPrise en charge complète de Chrome OuiBord Prise en charge complète 12Prise en charge complète de Firefox OuiPrise en charge complète d'IE OuiPrise en charge complète d'Opera OuiPrise en charge complète de Safari OuiPrise en charge complète de WebView Android OuiPrise en charge complète de Chrome Android OuiPrise en charge complète de Firefox Android OuiOpera Android Prise en charge complète OuiPrise en charge complète de Safari iOS OuiSamsung Internet Android Prise en charge complète Oui

En-têtes Last-Modified et If-Modified-Since pour WordPress

Peu font attention aux en-têtes HTTP Dernière modification Et Si-Modifié-Depuis lors de l'optimisation de votre site, mais en vain ! Il est important que la page, dont le contenu n'a pas changé depuis la dernière visite du robot de recherche, donne un code 304, qui indique en fait que cette page particulière n'a été complétée par rien - vous n'avez pas modifié ou complété le texte, aucun commentaire n'a été ajouté à cette entrée, etc. P.

Si cet en-tête http est manquant, alors dans Yandex, lors du tri des résultats par date, le site ne sera pas visible pour la plupart des utilisateurs.

C'est pourquoi il est important non seulement de le configurer correctement, mais chaque fois que vous modifiez un message, mettez à jour la date à la date actuelle. Cela devra être fait manuellement.

C'est plus simple avec les commentaires : lorsqu'un visiteur ajoute un commentaire, puis dans une variable $last_modified_time l'heure à laquelle le commentaire a été ajouté est saisie automatiquement - ce sera la date à laquelle la page a été modifiée pour la dernière fois.

Pourquoi les en-têtes Last-Modified et If-Modified-Since sont-ils nécessaires ?

1. Lorsque le serveur renvoie un tel code, l'exécution de tous les scripts PHP sur la page n'est même pas démarrée. La page est chargée depuis le cache de recherche, et cela, vous l'aurez compris, réduit considérablement la charge sur le serveur au grand bonheur de votre hébergeur et accélère le chargement de la page pour le visiteur, qui lui aussi ne peut que se réjouir.

Comment cela peut-il arriver?

Lors de la numérisation d'Internet, les araignées Google et Yandex stockent une copie de chaque site dans leur base de données. Cette copie sert en quelque sorte de modèle de comparaison : si tout est pareil ou s'il y a eu des changements. Et si les en-têtes Last-Modified et If-Modified-Since ne sont pas configurés ou mal configurés, les nouvelles pages du site sont indexées et la page principale dans le cache du moteur de recherche n'est pas mise à jour pendant longtemps, tout comme le flux de commentaires n'est pas mis à jour.

Mais pour les pages fréquemment mises à jour (fils d'actualité mis à jour plusieurs fois par jour, blogs activement commentés, etc.), il a un inconvénient : les informations du cache deviennent trop rapidement obsolètes et une personne, même en rechargeant la page, ne voit pas les dernières nouvelles, ne voit pas de nouveaux commentaires. Mais c'est encore la moitié du problème. Le problème est que le robot ne le voit pas non plus, à moins qu'il ne soit allumé. titre correct dernière modification.

header("Last-Modified: ".gmdate("D, d M Y H:i:s ")."GMT");

Si votre site est fréquemment mis à jour (par exemple, vos messages sont souvent commentés), vous pouvez désactiver la mise en cache avec l'ensemble d'en-têtes suivant :

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

Cela signifie que la validité de la copie stockée doit être revérifiée à chaque demande.

Comment fonctionne la mise en cache du navigateur ?

S'il n'est pas désactivé en appelant la fonction no_cache, alors dans Firefox et IE la page est stockée dans le cache, et c'est la page qui est renvoyée à toutes les requêtes suivantes.

Pour actualiser la page et obtenir sa dernière version, vous devez appuyer sur la combinaison de touches Ctrl+F5, le bouton Rafraîchir normal (F5) ne fonctionne pas. Et je dois dire que les documents dans le cache IE peuvent être stockés très, très longtemps.

Dans Opera, la page de cache est effacée en appuyant sur le bouton Actualiser ou en appuyant sur F5. La combinaison CRTL + F5 dans Opera - recharger tous les onglets ouverts Comme vous l'avez compris, si vous en avez ouvert beaucoup, vous risquez de vous laisser pousser la barbe en attendant.

Si vous désactivez la mise en cache des pages avec la fonction no_cache, alors Opera et Firefox utilisent un mécanisme avec l'en-tête If-Modified-Since lors de l'accès à une telle page. Ainsi, la mise en cache se produit, mais le navigateur demande au serveur si la page a réellement changé ou non - c'est la bonne question.

Par conséquent, vous devez également connecter le traitement de ce paramètre. Je ne décrirai pas quoi et quelle fonction signifie, je donnerai simplement le code qui renvoie correctement les en-têtes et ne provoque pas de conflits sur la plupart des hébergements avec lesquels j'ai eu à travailler. Cette conception fonctionne pour sweb.ru, eomy.net, timeweb.ru, fastvps.ru, startlogic.com

header("Expire : ".gmdate("D, d M Y H:i:s", time() + 7200)." GMT");
header("Cache-Control : no-cache, must-revalidate");
$mt = filemtime($file_name);
$mt_str = gmdate("D, d M Y H:i:s ")."GMT" ;
si (isset($_SERVER["HTTP_IF_MODIFIED_SINCE"]) &&
strtotime($_SERVER["HTTP_IF_MODIFIED_SINCE"]) >= $mt)
(en-tête("HTTP/1.1 304 Non modifié");
mourir;
}
header("Dernière modification : ".$mt_str);
echo $texte;
header("Vary : Accept-Encoding");
header("Accept-Encoding:gzip,deflate,sdch");
?>

Donc, tout ce que vous avez à faire est de copier ce code et de l'ajouter au fichier header.php Votre thème AU-DESSUS DE . Ceux. ce code est tout en haut du fichier AVANT le reste du code


Attention! Avant d'ajouter quoi que ce soit, enregistrez ce fichier sur votre ordinateur afin de pouvoir restaurer la version d'origine si la vôtre ne permet pas une telle configuration d'en-tête.

Nous vérifions le résultat sur le service pour vérifier les en-têtes Last-Modified et If-Modified-Since http://last-modified.com/ru/if-modified-since.html


  • Si le résultat est positif, nous essuyons la sueur du front et allons boire du thé.
  • Si le résultat est négatif, la même construction peut être ajoutée au fichier index.phpà la racine de votre WordPress (j'ai rencontré cela sur l'hébergement timeweb.ru). De même, au-dessus de tout le reste. Ne l'oubliez pas lors de la mise à jour - le fichier d'index sera écrasé dans sa forme standard.

Voila ! En définissant correctement les en-têtes Last-Modified et If-Modified-Since, nous avons obtenu un tas de bonus :

  • Augmentation de la vitesse de chargement des pages, ce qui est important pour Googlebot et agréable pour les utilisateurs.
  • Nous avons réduit la charge sur le serveur, ce qui a plu à l'hébergeur.
  • La date sera affichée dans les résultats de recherche Yandex dernière mise à jour pages, ce qui dans certains cas est très important pour les gens, et donc indirectement cela aura un effet positif sur les facteurs comportementaux.
  • Les pages de notre site participeront au tri des moteurs de recherche par date - oui, les utilisateurs avancés l'utilisent.
  • Et, en conséquence de tout ce qui précède, l'indexation de notre site par les moteurs de recherche sera très accélérée.



Haut