Questa pagina è stata modificata l'ultima volta nel 1576. Un blog che contiene molte informazioni interessanti…. Velocizzare l'indicizzazione da parte dei motori di ricerca

Intestazione HTTP Last-Modified (ultime modifiche) trasferisce il tempo al cliente ultima modifica documento (pagina web). Il client (browser o robot di ricerca) invia l'intestazione " Se-modificato-dal" e se la data dell'ultima modifica della pagina corrisponde, il server restituisce l'intestazione " 304 Non modificato" e non carica la pagina. Se l'ora dell'ultima modifica è diversa (o l'intestazione dell'ultima modifica non è configurata), il server restituisce l'intestazione " 200 ok" e carica la pagina. Cioè, invece di ricaricare nuovamente la pagina e aggiornare la cache, il client riceve solo intestazione 304. Il client risparmia traffico e il server invia meno dati: risparmi reciproci.

Ma perché ci sarebbe questo articolo se non per parlare dei benefici che l’impostazione dell’header Last-Modified comporta, o più precisamente, per velocizzare l’indicizzazione del sito. Non è difficile intuire che 10 pagine di un sito verranno indicizzate più velocemente di 1000. Lo stesso principio che permette di ottimizzare il caricamento delle pagine vale anche per l'indicizzazione. Un motore di ricerca non ha bisogno di indicizzare 1.000 pagine per trovare 10 nuove pagine. Grazie all'ultima modifica, lasciamo solo le pagine nuove (o aggiornate) per il robot. Il robot arriva sul posto e prende prima ciò di cui ha bisogno e poi tutto il resto.

Impostazione dell'intestazione Last-Modified

Assicurati che le intestazioni http siano corrette. In particolare, ciò che è importante è il contenuto della risposta che il server dà alla richiesta “if-modified-since”. L'intestazione Last-Modified deve indicare la data corretta dell'ultima modifica del documento. Anche se il server non visualizza la data dell'ultima modifica del documento, il tuo sito verrà indicizzato. Tuttavia, in questo caso, dovresti considerare quanto segue: - i risultati della ricerca non mostreranno la data accanto alle pagine del tuo sito; - ordinando per data il sito non sarà visibile alla maggior parte degli utenti; - il robot non sarà in grado di ottenere informazioni se la pagina del sito è stata aggiornata dall'ultima indicizzazione. E poiché il numero di pagine che un robot riceve da un sito in una visita è limitato, le pagine modificate verranno reindicizzate meno spesso. Assicurati che il tuo server web supporti l'intestazione HTTP "If-Modified-Since". Questa intestazione consentirà al server web di comunicare a Google se il contenuto del sito è cambiato dall'ultima volta che è stato scansionato. Il supporto di questa funzionalità riduce il sovraccarico e l'utilizzo della larghezza di banda.

Ecco alcuni esempi di come configurare l'ultima intestazione modificata da inviare e If-Modified-Since da gestire correttamente.

Come impostare meta Last-Modified per le pagine HTML statiche

Come impostare l'ultima modifica in php

= $LastModified_unix) ( header($_SERVER["SERVER_PROTOCOL"] . " 304 Non modificato"); exit; ) header("Ultima modifica: ". $LastModified); ?>

Come configurare il file .htaccess dell'ultima modifica

RewriteRule .* - RewriteRule .* -

Come configurare nginx + php

location ~ .php$ ( ... if_modified_since off; fastcgi_pass fcgi; fastcgi_index indice.php; fastcgi_param SCRIPT_FILENAME /<путь >/web$fastcgi_nome_script; ... fastcgi_pass_header Ultima modifica; includere fastcgi_params; )

Controlla Ultima modifica

Quando si passa l'intestazione al client è configurato, non fa male controlla l'ultima modifica per correttezza. Puoi controllare Last-Modified sul tuo sito Web o su quello di terze parti tramite i servizi online.

Oppure effettua il tuo controllo per la corretta elaborazione dell'intestazione Last-Modified:

Impostazione dell'intestazione Last-Modified e l'elaborazione dell'intestazione If-Modified-Since sarà estremamente utile per qualsiasi sito più grande o più piccolo. La velocità di elaborazione delle pagine del sito Web può diventare significativa. Una configurazione relativamente semplice non creerà problemi, soprattutto perché per i CMS più diffusi come joomla, wordpress, modx, ecc. ci sono soluzioni già pronte.

Ci sono molti miti diversi che circolano nel campo dell’ottimizzazione dei motori di ricerca dei siti web (SEO). Alcuni di loro hanno una base, altri provengono dal nulla. In questa nota ne esamineremo uno, utilizzando l'intestazione della risposta last-Modified.

Qualche tempo fa abbiamo ricevuto un documento intitolato “Ingate Recommendations for Web Studios on Promoted Sites”. E una delle “raccomandazioni” era la seguente:

Dopo un restyling o in fase di sviluppo di un nuovo sito, deve essere indicata la data dell'ultima modifica delle pagine del sito (Last Modified).

Per aggiungere al sito all'indirizzo Informazioni PHPè necessaria la data dell'ultima modifica delle pagine all'inizio codice sorgente inserire uno script in ogni pagina


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

Sono state queste assurdità assurde, questa assoluta assurdità e un codice francamente folle che mi ha spinto a scrivere questa nota. Qui cercherò di spiegare cos'è Last-Modified, perché è necessario e come lo utilizzano i browser e i motori di ricerca.

Cos'è l'ultima modifica

Quando si trasmettono informazioni al client (browser o robot di ricerca), il server web riporta molti dati aggiuntivi. Possono essere visualizzati nella console del browser, ad esempio:

configurare il server per emettere intestazioni di risposta corrette (ad esempio, se la pagina non esiste, emettere un errore 404 e se viene ricevuta una richiesta If-Modified-Since, emettere un codice 304 se la pagina non è stata modificata dall'ultima volta data specificata nella richiesta).

Puoi anche vedere che se il server non risponde in alcun modo a una richiesta GET condizionale, non è diverso da una richiesta normale. Cioè, l'intestazione Last-Modified con l'ora corrente, anch'essa formata in modo errato (ciao Integgate!) non è affatto necessaria!

Quindi l'ultima modifica è necessaria o no?

Generalmente necessario. Ma è importante capire che non è l'intestazione in sé a svolgere alcun ruolo, ma l'intero scenario della richiesta condizionale, che deve essere completamente implementata dal sito. È in questo caso che otterremo un'elevata velocità di indicizzazione del sito.

Ma spesso è molto difficile implementarlo in un CMS già pronto. Ciò potrebbe richiedere modifiche piuttosto significative al codice del CMS stesso.

Sebbene per un certo numero di CMS ciò possa essere ottenuto abilitando la memorizzazione nella cache delle pagine. Se il CMS memorizza nella cache le pagine, creando e servendo essenzialmente file statici, il server Web stesso risponderà correttamente alle richieste condizionali. Ad esempio, in WordPress questo può essere ottenuto utilizzando il plugin WP Super Cache:

Controlliamolo in azione. Ho abilitato questo plugin, ho aperto il browser in modalità anonima e ho effettuato due richieste per la stessa pagina. Si vede chiaramente che la seconda risposta è corretta - 304 Not Modified:

Invece di una conclusione

Pertanto, ci siamo occupati dell'intestazione Last-Modified. Innanzitutto deve fornire informazioni sulla data e l'ora in cui il documento è stato effettivamente modificato. In secondo luogo, la risposta del server a una richiesta condizionale con l’intestazione If-Modified-Since è estremamente importante.

Bene, ascolta meno i SEO che non conoscono le basi di come funziona Internet.

Una delle fasi dell'ottimizzazione di un sito Web per il suo corretto funzionamento e una promozione di successo è l'ottimizzazione lato server. Altri punti includono l'impostazione della risposta corretta del server alla richiesta "Ultima modifica". Impostare correttamente questo parametro può aumentare la velocità di caricamento del sito e avere un effetto positivo sulla sua indicizzazione da parte dei robot di ricerca.

Che cos'è l'ultima modifica e perché è necessaria?

Come suggerisce il nome, l'intestazione Last-Modified informa il cliente (visitatore del sito) sull'ultima volta che una particolare pagina del sito è stata modificata. Se un robot di ricerca agisce come visitatore del sito e la risposta Ultima modifica al documento o alla pagina richiesta non è configurata (o è configurata in modo errato) sul sito (server), il robot di ricerca non ha altra scelta che indicizzare tutte le pagine di Internet risorsa ancora e ancora ad ogni visita, creando così un certo carico sul server situato sul sito di hosting. Cosa succede se il numero di pagine è centinaia o addirittura migliaia? A seconda delle caratteristiche e delle capacità del server, esiste la possibilità che si verifichi qualche tipo di errore da parte dell'hosting. Oltre a questo è bene precisare che il robot di ricerca ha un limite al numero di pagine indicizzate “alla volta”, quindi se non c’è impostazioni corrette Intestazione Last-Modified, rischiamo che le pagine non modificate vengano indicizzate dal robot, ma le nuove pagine di cui abbiamo bisogno no.

In base alla specifica RFC 2616 che descrive l'HTML Hypertext Transfer Protocol, un client può "chiedere" al server se una pagina è cambiata da una certa data inviando al server un'intestazione "If-Modified-Since". Se la pagina richiesta non è cambiata, il server restituirà un'intestazione "304 Not Modified" e il browser non caricherà la pagina e il server web non invierà molti dati. Altrimenti (se la pagina del sito è cambiata rispetto alla richiesta precedente), il server restituirà una risposta “200 OK” e direttamente il codice della pagina stessa.

In aggiunta a quanto sopra, citiamo le raccomandazioni di Yandex: “Il robot non sarà in grado di ottenere informazioni se la pagina del sito è stata aggiornata dall’ultima indicizzazione. E poiché il numero di pagine che il robot riceve dal sito in una visita è limitato, le pagine modificate verranno reindicizzate meno spesso."

TOTALE: Lo scopo importante dell'intestazione "Last-Modified" è informare il visitatore del sito e robot di ricerca la data dell'ultima modifica di qualsiasi documento.

Perché è necessario configurare correttamente Last-Modified?

Configurando correttamente la risposta del server Ultima modifica, possiamo ottenerne diversi risultati positivi per il nostro sito:

  • La velocità di caricamento della pagina del sito aumenta per le persone: se la pagina è già stata visitata dall’utente e al momento della visita successiva la pagina non è cambiata, il browser del visitatore non ricaricherà la pagina, ma ne visualizzerà la copia memorizzata nella cache;
  • Il carico sulla piattaforma di hosting (server) è ridotto: con questo algoritmo di funzionamento il server verrà caricato molto meno a causa della necessità di trasferire al visitatore del sito solo il volume delle pagine modificate;
  • Viene visualizzata la data dell'ultimo documento nei risultati della ricerca: questo fatto può attirare visitatori sul tuo sito se viene visualizzata una data “fresca”;
  • Ordinare per data: le pagine del sito parteciperanno all'ordinamento per data nei risultati di ricerca;
  • L'indicizzazione del sito da parte dei robot di ricerca è notevolmente accelerata: A causa della rapida risposta del tuo sito sulla data delle pagine scansionate, le vecchie pagine (già indicizzate) verranno “gettate da parte”, lasciando il posto a documenti “freschi”. Questo punto è il più significativo quando si promuove un sito, perché... l'elevata velocità di indicizzazione aumenta il livello di fiducia nel sito da parte dei robot di ricerca.

Come verificare se Last-Modified è configurato correttamente?

Uno dei servizi dove è possibile verificare la correttezza (e addirittura l'esistenza) della risposta del server Last-Modified configurato è l'omonimo last-modified.com

Nel campo di immissione devi scrivere l'indirizzo del tuo sito web o di una pagina specifica e fare clic sul pulsante "Verifica". Il risultato del servizio sarà una dimostrazione della risposta del tuo sito a una richiesta per le intestazioni “Last-Modified” e “304 Not Modified”. Un esempio di tale controllo:

Impostazione dell'ultima modifica

Diamo un'occhiata all'implementazione della risposta dell'intestazione HTTP Last-Modified in PHP.

Su Internet è spesso possibile trovare i seguenti consigli per l'impostazione dell'Ultima modifica:

Voglio solo esclamare: "Non abbiamo bisogno di questo tipo di hockey!" E scopriamo perché. In risposta a una richiesta dell'utente, la funzione gmdate ce lo restituirà data odierna Ora di Greenwich (GMT). E questo accadrà ogni volta con ogni richiesta di un utente o di un robot di ricerca: il server restituirà esattamente il suo data odierna. Si scopre che ogni volta che i motori di ricerca visitano il tuo sito, vedranno che la pagina richiesta è stata appena aggiornata. Questo potrebbe essere “utile” solo poche volte... Dopo un po', il motore di ricerca si renderà conto di essere stato “ingannato” e perderà ogni fiducia nel tuo sito. Di conseguenza, tale implementazione non è adatta a noi.

Rivolgiamoci alla risorsa di cui sopra per chiedere aiuto. last-modified.com. Presenta inoltre un'implementazione dell'intestazione HTTP Last-Modified in PHP. Sembra questo:

$LastModified_unix = 1294844676;

$IfModifiedSince = falso;



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

Diamo un'occhiata a come funziona questo codice. Variabile $LastModified_unix impostare manualmente nel formato Timbro temporale Unix(il numero di secondi trascorsi dall'inizio dell'era Unix - dal 1 gennaio 1970).

Funzione gmdate restituisce l'ora GMT corrente nel formato Giorno, GG Lun ANNO HH:MM:SS GMT.

Successivamente: ottieni l'ora dell'ultima modifica della pagina, controlla la disponibilità Se-modificato-dal, se ce n'è uno, lo regaliamo 304 Non modificato e interrompere la sceneggiatura. Altrimenti generiamo un header Ultima modifica e consegnare l'intera pagina.

Nell'opzione sopra si propone di impostare l'ora $LastModified_unix manualmente. Ma cosa succede se ci sono molte pagine sul sito? Per fare ciò, “modernizziamo” un po’ lo script, sostituendo solo la prima riga:

$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 = falso;

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 Non modificato");
Uscita;
}

header("Ultima modifica: ". $UltimaModifica);

Nella versione aggiornata, la prima riga di codice converte la rappresentazione testuale della data in lingua inglese a un'etichetta nel formato Timbro temporale Unix, utilizzando così l'orario di modifica calcolato automaticamente della pagina corrente del sito.

Tutto è pronto! Ora non dobbiamo fare altro che incollare il codice risultante nella sezione ... ogni pagina del sito e goditi il ​​caricamento e l'indicizzazione delle pagine ad alta velocità da parte dei robot di ricerca.

Lascia che ti aiutiamo con la configurazione dell'Ultima modifica!

Inizia con una semplice chiamata al T Design! Il nostro numero di telefono è 8 499 340-17-82 - funziona in modalità non stop, affinché tu possa ricevere rapidamente le informazioni che ti interessano per risolvere i problemi di sviluppo e supporto del tuo sito. Oppure scrivi a e-mail. Ti consiglieremo su tutte le domande e selezioneremo la tariffa ottimale per la tua azienda

Sintassi

Se-modificato-dal: , ::GMT

Direttive

Uno tra "lunedì", "martedì", "mercoledì", "giovedì", "venerdì", "sabato" o "domenica" (con distinzione tra maiuscole e minuscole). Numero del giorno a 2 cifre, ad es. "04" o "23". Uno tra "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dic" ( maiuscole e minuscole). Numero dell'anno a 4 cifre, ad es. "1990" o "2016". Numero dell'ora a 2 cifre, ad es. "09" o "23". Numero di minuti a 2 cifre, ad es. "04" o "59". Secondo numero a 2 cifre, ad es. "04" o "59". GMT

Ora media di Greenwich. Le date HTTP sono sempre espresse in GMT, mai nell'ora locale.

Esempi

Se modificato dal: mercoledì 21 ottobre 2015 07:28:00 GMT

Specifiche

Specifica Titolo
RFC 7232, sezione 3.3: Se-Modificato-Since Protocollo di trasferimento ipertestuale (HTTP/1.1): richieste condizionali

Compatibilità del browser

La tabella di compatibilità in questa pagina è generata da dati strutturati. Se desideri contribuire ai dati, consulta https://github.com/mdn/browser-compat-data e inviaci una richiesta pull.

Aggiorna i dati di compatibilità su GitHub

DesktopMobile
CromoBordoFirefoxInternet Explorermusica liricaSafariVisualizzazione web AndroidChrome per AndroidFirefox per AndroidOpera per AndroidSafari su iOSInternet Samsung
Se-modificato-dalSupporto completo per Chrome SìSupporto completo Edge 12Supporto completo per Firefox SìIE Supporto completo SìOpera Supporto completo SìSafari Supporto completo SìWebView Android Supporto completo SìChrome Android Supporto completo SìFirefox Android Supporto completo SìOpera Android Supporto completo SìSafari iOS Supporto completo SìSamsung Internet Android Supporto completo Sì

Intestazioni Last-Modified e If-Modified-Since per WordPress

Poche persone prestano attenzione alle intestazioni HTTP Ultima modifica E Se-modificato-dal quando ottimizzi il tuo sito, ma invano! È importante che la pagina, il cui contenuto non è cambiato dall'ultima visita del robot di ricerca, restituisca un codice 304, che in realtà indica che questa particolare pagina non è stata integrata con nulla: non hai modificato o integrato il testo , non sono stati aggiunti commenti a questo post, ecc. P.

Se questa intestazione http manca, in Yandex, quando si ordinano i risultati per data, il sito non sarà visibile alla maggior parte degli utenti.

Ecco perché è importante non solo impostarlo correttamente, ma anche aggiornare la data a quella corrente ogni volta che si modifica un record. Questo dovrà essere fatto manualmente.

Con i commenti è più semplice: quando un visitatore aggiunge un commento, quindi nella variabile $ultima_modifica_ora l'ora in cui il commento è stato aggiunto viene inserita automaticamente: questa sarà la data dell'ultima modifica della pagina.

Perché abbiamo bisogno delle intestazioni Last-Modified e If-Modified-Since?

1. Quando il server invia tale codice, l'esecuzione di tutti gli script PHP sulla pagina non viene nemmeno avviata. La pagina viene caricata dalla cache di ricerca e questo, come capisci, riduce in modo molto significativo il carico sul server, con grande gioia del tuo hoster, e accelera il caricamento della pagina per il visitatore, che è anche una buona notizia.

Come avviene questo?

Durante la scansione di Internet, gli spider di Google e Yandex salvano una copia di ciascun sito nel loro database. Questa copia serve come una sorta di campione per il confronto: è tutto ancora uguale o si sono verificati dei cambiamenti. E se le intestazioni Last-Modified e If-Modified-Since non sono configurate o sono configurate in modo errato, le nuove pagine del sito vengono indicizzate e la pagina principale nella cache del motore di ricerca non viene aggiornata per molto tempo, proprio come il commento il feed non è aggiornato.

Ma per le pagine aggiornate di frequente (feed di notizie aggiornate molte volte al giorno, blog commentati attivamente, ecc.) ha uno svantaggio: le informazioni nella cache diventano obsolete troppo rapidamente e una persona, anche ricaricando la pagina, non vede le ultime notizie , non vede nuovi commenti. Ma non è poi così male. Il problema è che neanche il robot lo vede, a meno che non sia acceso titolo corretto Ultima modifica.

header("Ultima modifica: ".gmdate("D, d M Y H:i:s ")."GMT");

Se il tuo sito viene aggiornato frequentemente (ad esempio, i tuoi post vengono spesso commentati), puoi disabilitare la memorizzazione nella cache con il seguente set di intestazioni:

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

Ciò significa che la validità della copia archiviata deve essere ricontrollata ad ogni richiesta.

Come funziona la memorizzazione nella cache nei browser?

Se non viene disabilitato chiamando la funzione no_cache, in Firefox e IE la pagina viene archiviata nella cache e per tutte le richieste successive viene restituita questa pagina.

Per aggiornare la pagina e ottenere la versione più recente, è necessario premere la combinazione di tasti CTRL+F5, il solito pulsante “Aggiorna” (F5) non funziona. E devo dire che i documenti nella cache di IE possono essere archiviati per un tempo molto, molto lungo.

In Opera, la pagina della cache viene cancellata premendo il pulsante "Aggiorna" o il tasto F5. La combinazione CRTL+F5 in Opera ricarica tutte le schede aperte. Come hai capito, se le apri molto, potresti farti crescere la barba durante l'attesa.

Se disabiliti la memorizzazione nella cache della pagina con la funzione no_cache, Opera e Firefox, quando accedi a tale pagina, utilizzano il meccanismo con l'intestazione If-Modified-Since. Pertanto, viene eseguita la memorizzazione nella cache, ma il browser chiede al server se la pagina è effettivamente cambiata o meno: questo è il modo corretto di porre la domanda.

Pertanto è necessario abilitare l'elaborazione anche di questo parametro. Non descriverò cosa significa questa funzione, fornirò semplicemente il codice che invia le intestazioni correttamente e non causa conflitti sulla maggior parte dei siti di hosting con cui ho lavorato. Questo design funziona sweb.ru, eomy.net, timeweb.ru, fastvps.ru, startlogic.com

header("Scadenza: ".gmdate("D, d M Y H:i:s", time() + 7200)." GMT");
header("Cache-Control: no-cache, must-revalidate");
$mt = filemtime($nome_file);
$mt_str = gmdate("D, d M Y H:i:s ")."GMT";
if (isset($_SERVER["HTTP_IF_MODIFIED_SINCE"]) &&
strtotime($_SERVER["HTTP_IF_MODIFIED_SINCE"]) >= $mt)
(intestazione("HTTP/1.1 304 non modificato");
morire;
}
header("Ultima modifica: ".$mt_str);
echo $testo;
header("Vary: Accept-Encoding");
header("Accetta codifica:gzip,deflate,sdch");
?>

Quindi tutto ciò che devi fare è copiare questo codice e aggiungerlo al file intestazione.php Il tuo tema SOPRA . Quelli. questo codice si trova all'inizio del file PRIMA di tutto il resto del codice


Attenzione! Prima di aggiungere qualsiasi cosa, salva questo file sul tuo computer in modo da poter ripristinare la versione originale se il tuo non consente tale configurazione di intestazione.

Controlliamo il risultato utilizzando il servizio di controllo dell'intestazione Last-Modified e If-Modified-Since http://last-modified.com/ru/if-modified-since.html


  • Se il risultato è positivo, ci asciughiamo il sudore dalla fronte e andiamo a bere il tè.
  • Se il risultato è negativo è possibile aggiungere la stessa costruzione al file indice.php nella root del tuo WordPress (l'ho riscontrato sull'hosting timeweb.ru). Allo stesso modo, sopra ogni altra cosa in esso. Non dimenticartene quando aggiorni: il file indice verrà sovrascritto nella sua forma standard.

Ecco! Impostando correttamente le intestazioni Last-Modified e If-Modified-Since, abbiamo ottenuto una serie di bonus:

  • Abbiamo aumentato la velocità di caricamento della pagina, cosa importante per il robot di Google e piacevole per le persone.
  • Abbiamo ridotto il carico sul server, cosa che ha soddisfatto l'hoster.
  • La data verrà visualizzata nei risultati di ricerca Yandex ultimo aggiornamento pagine, che in alcuni casi è molto importante per le persone, e quindi indirettamente ciò avrà un effetto positivo sui fattori comportamentali.
  • Le pagine del nostro sito saranno coinvolte nell'ordinamento dei motori di ricerca per data: sì, sì, questo è ciò che utilizzano gli utenti avanzati.
  • E, come conseguenza di tutto quanto sopra, l'indicizzazione del nostro sito da parte dei motori di ricerca accelererà notevolmente.



Superiore