Come configurare smartphone e PC. Portale informativo
  • casa
  • Interessante
  • Intestazione Last-Modified, Symfony e accelerazione dell'indicizzazione della ricerca. Miti SEO: tutto sull'intestazione dell'ultima modifica

Intestazione Last-Modified, Symfony e accelerazione dell'indicizzazione della ricerca. Miti SEO: tutto sull'intestazione dell'ultima modifica

In questo articolo, configureremo l'intestazione di risposta del server più importante - Last-Modified, a causa della quale il carico sul server diminuirà del 20-30% e l'indicizzazione del tuo sito accelererà notevolmente. Insegneremo anche al tuo server a emettere un errore 304 quando un robot di ricerca accede al tuo sito con un'intestazione If-Modified-Since.

Perché è necessaria l'intestazione Last-Modified

Prima di tutto, vorrei discutere il significato dell'intestazione Last-Modified. Ma, come dimostra la pratica, insieme al suo estremo significato e necessità, questo titolo è per qualche ragione dimenticato ovunque e completamente ingiustamente sottovalutato. Se leggi i consigli dei motori di ricerca, che affermano chiaramente e apertamente l'importanza della trasmissione nelle intestazioni Last-Modified (la data dell'ultima modifica di una determinata pagina), allora non avrai dubbi che ciò deve essere fatto e il prima è meglio è. Ciò è particolarmente vero per le risorse con traffico grande e medio, con contenuti regolarmente aggiornati. I siti statici con 10 pagine possono farne a meno, sebbene questa funzionalità non influirà negativamente o interferirà in alcun modo.

L'intestazione Last-Modified contiene la data e l'ora GMT dell'ultima modifica della pagina. Ogni pagina ha la sua data. Quasi tutti i CMS esistenti ora salvano la data in cui sono state modificate pagine o post, inoltre la data di aggiornamento della pagina cambia quando qualcuno ha lasciato un commento indicizzato (tutto dipende dalle tue impostazioni specifiche). Ma per qualche ragione, non tutti i moderni sistemi di amministrazione prevedono l'invio della stessa data di modifica della pagina come intestazione e, ancor di più, non reagiscono in alcun modo all'intestazione If-Modified-Since ricevuta, ma ne parleremo più avanti.

Il fatto è che un robot di ricerca può visitare un sito regolarmente aggiornato abbastanza spesso ed eseguire la scansione delle sue pagine in ordine di priorità, a volte devi persino impostare il parametro Crawl-delay in robots.txt per moderare l'ardore di robot eccessivamente attivi che sovraccaricare lo sfortunato server e, a volte, al contrario, le persone lavorano duramente per mesi senza vedere alcun risultato, solo per aumentare la frequenza delle visite al sito da parte dei robot di ricerca. Se un tale sito non dice al crawler quando quali pagine sono state modificate l'ultima volta e se sono cambiate dall'ultima visita, il crawler a sua volta scorre le pagine ancora e ancora, come se fossero cambiate, anche se questo potrebbe non essere il caso. . E poiché il numero di pagine scaricabili per visita del bot di ricerca è limitato, potrebbe semplicemente non arrivare ai tuoi nuovi articoli e tornare a casa, avendo speso il limite per le vecchie pagine che non sono state affatto aggiornate. Indubbiamente, prima o poi lo scanner arriverà comunque alle nuove pagine, ma sarà molto più tardi. Questo deve essere ricordato come un assioma e chi non crede legge dell'ultima modifica sul sito Web Yandex.

Lo stesso vale per i visitatori regolari del sito, perché se il tuo vecchio articolo è nella cache locale e il server non invia l'intestazione 304 Non modificato, verrà caricato ancora e ancora, ogni volta da zero, quindi il carico sul il server sarà più alto. Se nulla è cambiato dall'ultima visita a una pagina e dall'aggiunta alla cache, è necessario che il server invii un'intestazione 304 Non modificata nella risposta e interrompa l'ulteriore generazione della pagina. Perché caricare vecchie pagine ogni volta se non è cambiato nulla su di esse? Il loro contenuto può essere prelevato dalla cache. Elementare ed efficace!

Risposta del server all'intestazione If-Modified-Since

Ci siamo avvicinati senza problemi al secondo, non meno importante punto: la reazione del tuo server all'intestazione If-Modified-Since inviata dai robot di ricerca. Lo fanno per verificare se la tua pagina è cambiata dall'ultima visita e passare proprio questo tempo nel titolo. Il tuo server in questo caso deve confrontare l'ultima volta che la pagina è stata aggiornata dal bot e l'ultima volta che è stata visitata, cosa che ti dice. Se da allora non è apparso nulla di nuovo sulla pagina, il server dovrebbe rispondere con un'intestazione 304 Not Modified e interrompere il trasferimento dei dati uscendo dallo script in esecuzione (nel caso di PHP, questa è la funzione Uscita). Dopo aver ricevuto una risposta 304, il robot di ricerca capirà che non c'è più niente da fare qui e andrà alla pagina successiva, risparmiando così molto tempo.

Grazie a ciò, l'indicizzazione del tuo sito viene notevolmente accelerata e viene ridotto anche il carico non necessario sul server.

Vorrei aggiungere che in uno dei nostri articoli abbiamo analizzato un altro modo interessante per velocizzare l'indicizzazione dei siti. Lì si trattava di siti sul motore di WordPress e per questo sono stati utilizzati i ping del server speciale, gli indirizzi dei quali abbiamo fornito e indicato cosa bisogna fare con loro.

funzione PHP

Quindi, andiamo subito al punto e diamo un'occhiata a una funzionalità sviluppata dai nostri esperti e testata con successo su diversi siti:

Funzione lastModified($gmdate) ( $IfModifiedSince = false; if (isset($_ENV["HTTP_IF_MODIFIED_SINCE"]) o isset($_SERVER["HTTP_IF_MODIFIED_SINCE"])) ( $IfModifiedSince = strtotime(substr(($_ENV["HTTP_IF_MODIFIED_SINCE "] ? $_ENV["HTTP_IF_MODIFIED_SINCE"] : $_SERVER["HTTP_IF_MODIFIED_SINCE"]), 5)); ) if ($IfModifiedSince && $IfModifiedSince >= strtotime($gmdate)) ( header($_SERVER["SERVER_PROTOCOL"] ." 304 Non modificato"); exit; ) header("Ultima modifica: ".$gmdate); )

Vorrei sottolineare che la funzione prende la data e l'ora GMT come unico argomento - gmdate() , e non Data(), per favore non confondere, per favore. L'argomento passato alla funzione è la data e l'ora dell'ultima modifica della pagina. Dove lo porterai dipende dal sistema di amministrazione, ad esempio in WordPress puoi ottenerlo in questo modo:

$WordpressPageLastModified = get_the_modified_date("r");

Ma cosa succede se non c'è un sistema di amministrazione e stiamo parlando di una pagina statica del sito, in cui le modifiche vengono apportate manualmente, proprio nel codice. In questo caso, abbiamo anche trovato una soluzione su come inviare la data dell'ultima modifica nell'intestazione:

$StaticPageLastModified = gmdate("D, d M Y H:i:s \G\M\T", filemtime($_SERVER["DOCUMENT_ROOT"]."/index.php"));

In questo caso utilizziamo la funzione filemtime(), che restituisce l'ora dell'ultima modifica del file nel formato ora Unix.

A proposito, ti sconsigliamo di pensare a questa data, anche se la tua pagina è rimasta statica per tutto questo tempo. Questo trucco non porterà a nulla di buono, perché. i motori di ricerca continueranno a controllare se la pagina è effettivamente cambiata e possono punirli per averli fuorvianti.

Controllo della risposta del server

Esistono diversi servizi per controllare la risposta del server su Internet, ma, come si è scoperto, non tutti lo fanno correttamente e non tutti ti consentono di tracciare il comportamento del tuo server in risposta alla trasmissione If-Modified- Poiché intestazione, ma dobbiamo assicurarci che il server invii l'intestazione 304 Non modificato se la pagina non è stata aggiornata dall'ultima visita.

Puoi anche controllare la risposta del server sul nostro sito Web, ma per un quadro più completo, ti consigliamo comunque di utilizzare il servizio Yandex ufficiale. Lì puoi specificare tutte le intestazioni necessarie e selezionare un'ora fittizia dell'ultima visita. Yandex ti consentirà anche di scegliere il tipo di bot di ricerca, ma per utilizzare questo strumento è necessario aggiungere e confermare i diritti per gestire il sito in Yandex.Webmaster, che, a dire il vero, dovrebbe sempre essere fatto prima.

Perché personalizzare l'intestazione Last-Modified. Proviamo a capire l'impostazione dell'intestazione Last-Modified il più rapidamente e semplicemente possibile.

Per cominciare, dirò che ciò è necessario principalmente per ridurre il carico sul server e accelerare l'indicizzazione delle pagine. Ecco perché è necessario regolare l'intestazione Last-Modified, soprattutto per grandi risorse con un numero elevato di pagine.

Lo scopo di questa intestazione è di fornire al cliente (browser o motore di ricerca) informazioni sulle ultime modifiche a una determinata pagina. Il client invia un'intestazione If-Modified-Since al server. Se non vengono trovate modifiche nella pagina, dal server viene restituita un'intestazione "304 Not Modified". In questo caso, la pagina non viene caricata.

Se sono state apportate modifiche, ciò verrà preso in considerazione e il server restituirà l'intestazione "200 OK" (la pagina verrà caricata con il contenuto aggiornato).

La corretta configurazione dell'ultima modifica offre i seguenti vantaggi:

  • i risultati della ricerca mostrano la data dell'ultimo aggiornamento del contenuto della pagina;
  • le pagine ordinate nel motore di ricerca per data occupano posizioni più alte;
  • l'indicizzazione delle pagine è notevolmente accelerata.
  • Perché i robot indicizzano più velocemente i siti con l'ultima modifica configurata?

    La risposta è semplice: se sul sito sono state modificate solo 20 pagine, il robot non ha bisogno di indicizzarle tutte e 500 alla ricerca di nuovi contenuti, poiché Last-Modified indicherà le pagine con le modifiche.

    L'ultima modifica è particolarmente importante per le risorse con un numero elevato di pagine, perché il robot ha un tempo limitato per eseguire la scansione di ciascun sito e potrebbe non avere il tempo di raggiungere le pagine desiderate.

    Come impostare l'ultima modifica

    Per prima cosa devi verificare se questa intestazione è configurata. Per fare ciò, puoi utilizzare i servizi varvy.com , last-modified.com o tools.seo-auditor.com.ru . Se il controllo ha mostrato l'assenza di un'intestazione, dovresti iniziare a configurarla.

    Se hai un sito statico, allora per ogni pagina devi scrivere il codice che vedi sullo schermo:

    Dopo ogni modifica del contenuto, modificare manualmente la data nel codice. E cosa, ogni volta, mi chiedi? Sì, se il sito è statico.

    Se il sito è dinamico, utilizziamo l'impostazione in PHP. Vedi spesso codice come questo:

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

    Deve essere aggiunto a header.php. Ma funzionerà solo per post e pagine e non funzionerà nella pagina principale. Inoltre, non è valido per tassonomie, archivi e contabilità per nuovi commenti.

    $Ultima modifica_unix = 1294844676;

    $Ultima modifica = gmdate("D, d M Y H:i:s \G\M\T", $Ultima modifica_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 ($IfModifiedDa && $IfModifiedDa >= &LastModified_unix) (

    header ($_SERVER['SERVER_PROTOCOL'] . ' 304 Non modificato');

    header('Ultima modifica: ' . $LastModified);

    Puoi anche personalizzare l'intestazione scrivendo due righe nel file .htaccess:

    RewriteRule .*

    RewriteRule .*

    Ma in questo caso, è necessario verificare se ci sono problemi dal lato hosting.

    Per non prescrivere codici, puoi utilizzare soluzioni già pronte per la configurazione di Last-Modified. Ad esempio, per CMS WordPress ci sono i plugin Clearfy e Last Modified Timestamp. La personalizzazione può essere eseguita utilizzando il plug-in WP Super Cache. Per fare ciò, nelle impostazioni avanzate, attiva la voce "Errore 304" (il supporto per una risposta 304 è disabilitato di default, in quanto alcuni hosting potrebbero avere problemi). Anche altri CMS hanno i propri plug-in o, in casi estremi, è possibile ordinare un plug-in da un programmatore.

    Dovrebbe essere chiaro che l'impostazione Ultima modifica non è sempre utile (ad esempio, quando su ciascuna pagina è installato un blocco di informazioni "attraverso" con contenuti dello stesso contenuto che cambiano regolarmente). In questo caso, i motori di ricerca potrebbero non percepire più le informazioni come nuove e visiteranno il tuo sito meno frequentemente.

    Altrimenti, configurando Last-Modified, ottieni:

    • risparmio di traffico;
    • velocizzare il sito;
    • segui i consigli dei motori di ricerca Google e Yandex, che accelera notevolmente l'indicizzazione e aumenta la visibilità delle pagine nella ricerca. Ciò è particolarmente evidente su risorse con un numero elevato di pagine.

    Durante la creazione di siti, molti sviluppatori dimenticano l'utilissima intestazione Last-Modified, grazie alla quale è possibile ottimizzare il caricamento delle pagine Web e rendere più semplice il funzionamento dei robot di ricerca. Successivamente, cercherò di colmare questa fastidiosa lacuna.

    Qual è lo scopo dell'intestazione Last-Modified?

    La funzione dell'intestazione, come suggerisce il nome, è quella di informare il cliente della data dell'ultima modifica del documento web. In base alla specifica rfc 2616, il client può "chiedere" al server web se la pagina è cambiata da una certa data inviando al server un'intestazione "If-Modified-Since". Se la pagina non è cambiata, il server restituisce solo l'intestazione "304 Not Modified", altrimenti il ​​server restituisce l'intestazione "200 OK" e il corpo della pagina. Come puoi vedere, il vantaggio è evidente sia per il server che per il client: il browser non caricherà la pagina più e più volte e il server web restituirà meno dati.

    Quali siti sono indicizzati meglio? Dinamico o statico?

    Un paio di anni fa, c'è stato un dibattito tra i SEO su quali siti vengono indicizzati meglio? Dinamico, scritto ad esempio in php, o statico, senza l'uso di linguaggi di programmazione. Conoscendo l'intestazione Last-Modified, puoi rispondere a questa domanda. Il fatto è che il server web stesso elabora l'intestazione "If-Modified-Since" se il file è statico. Nel caso della generazione dinamica di pagine, l'intera responsabilità della risposta spetta al linguaggio di programmazione e allo sviluppatore. E poiché lo sviluppatore spesso non è interessato a questo problema, i titoli non vengono forniti affatto.

    In che modo l'intestazione Last-Modified accelera l'indicizzazione della ricerca?

    Tutto è semplice, come è scritto nella guida di Yandex, "il robot non sarà in grado di ottenere informazioni sul fatto che la pagina del sito sia 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".

    Immaginare. C'è un sito con 10mila pagine. Il sito è scritto in php. L'intestazione Last-Modified non viene restituita correttamente. Il robot di ricerca non può ottenere informazioni sul fatto che la pagina del sito sia stata aggiornata dall'ultima indicizzazione. Cosa sta facendo? Indicizza tutte le pagine!!! E non solo quelli che sono cambiati.
    Certamente! Molti siti utilizzano Sitemap. Ma Sitemap è una raccomandazione, un aiuto per un ottimizzatore di motori di ricerca. Non può sostituire l'intestazione Last-Modified!

    Impostazione e gestione dell'intestazione Last-Modified in php

    Affinché il server web passi l'intestazione If-Modified-Since a php-backend, devi dirlo da questo!

    Per il pacchetto nginx + php,

    posizione ~ \.php$
    {

    se_modificato_da off;

    Fastcgi_pass fcgi;
    indice_fastcgi index.php;
    fastcgi_param SCRIPT_FILENAME /<путь >/web$nome_script_fastcgi;

    fastcgi_pass_header Ultima modifica;
    includi fastcgi_params;
    }

    Per un mucchio di apache + php, quindi

    # Se-Modificato-dal( se php non è installato come cgi, commenta le righe di seguito)
    RewriteRule .* -
    RewriteRule .* -

    * Questo codice sorgente è stato evidenziato con Evidenziatore codice sorgente.


    Se php funziona come un modulo, non è necessario configurare nulla!

    Semplice codice php per la gestione della richiesta If-Modified-Since,

    $qtime = isset($_SERVER["HTTP_IF_MODIFIED_SINCE" ])? $_SERVER["HTTP_IF_MODIFIED_SINCE" ]:"" ;

    $modificato = substr(gmdate("r" , $timestamp), 0, -5)."GMT" ;

    se ($hdr == $modificato)
    {
    header("HTTP/1.1 304 non modificato");
    header("Ultima modifica: $modificata");
    Uscita();
    }
    header("Ultima modifica: $modificata");
    //rendering

    * Questo codice sorgente è stato evidenziato con Evidenziatore codice sorgente.

    Come gestire la richiesta If-Modified-Since in symfony?

    symfony fornisce già un meccanismo di gestione degli header. Tutto ciò che lo sviluppatore deve fare è passare un'intestazione all'oggetto sfWebResponse. Se è specificato, il framework farà tutto da solo.
    $datastamp = ora();
    $response->setHttpHeader("Ultima modifica" , $response->getDate($datastamp));

    * Questo codice sorgente è stato evidenziato con Evidenziatore codice sorgente.


    Poiché la pagina di solito contiene contenuti diversi, ho scritto un metodo che espone l'ultima delle intestazioni passate!
    funzione pubblica statica setLastModified($datastamp)
    {
    $risposta = sfContext::getInstance()->getResponse();
    $richiesta = sfContext::getInstance()->getRequest();

    se (è_array($datastamp))
    {
    sort($datastamp, SORT_NUMERIC);
    $datastamp = $datastamp;
    }

    if (!$response->hasHttpHeader("Ultima modifica"))
    {
    $response->setHttpHeader("Ultima modifica" , $response->getDate($datastamp));
    }
    altro
    {
    $origLastModified = strtotime($response->getHttpHeader("Last-Modified" ));
    se ($origLastModified< $datestamp)
    $response->setHttpHeader("Ultima modifica" , $response->getDate($datastamp));
    }
    }

    * Questo codice sorgente è stato evidenziato con Evidenziatore codice sorgente.


    È molto comodo utilizzarlo se la pagina, ad esempio, contiene 3 video recenti, 3 articoli recenti e qualcos'altro. Caricando ogni modello dal database, possiamo chiamare il metodo e ottenere l'ultima data di modifica nella risposta.
    Per chi fosse interessato, il codice di elaborazione dell'intestazione è nella classe sfCacheFilter.class.php.

    In conclusione, voglio dire che l'uso dell'intestazione Last-Modified non è sempre giustificato. Ad esempio, se il sito ha 5.000 pagine e ognuna contiene lo stesso blocco con contenuti che cambiano frequentemente, usare un titolo sarà inutile! In questo caso, puoi assegnare titoli diversi solo ai client e ai robot di ricerca. Ma quanto a me, l'inganno dei robot non porta a niente di buono. Bene, o rimuovi questo blocco;).

    Puoi controllare il sito per la corretta elaborazione dell'intestazione

    Ci sono molti miti diversi nel campo dell'ottimizzazione dei motori di ricerca (SEO). Alcuni di loro hanno una base, chi non ha capito dove. In questa nota, ne considereremo uno: l'uso dell'intestazione della risposta dell'ultima modifica.

    Tempo fa ci siamo imbattuti in un documento intitolato "Linee guida di Ingate per i Web Studios sui siti promossi". E una delle "raccomandazioni" era la seguente:

    Dopo una riprogettazione o su un nuovo sito in fase di sviluppo, dovrebbe essere scritta la data dell'ultima modifica delle pagine del sito (Ultima modifica)

    Per aggiungere informazioni sulla data dell'ultima modifica delle pagine al sito in PHP, è necessario inserire lo script proprio all'inizio del codice sorgente di ogni pagina

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

    È stata questa sciocchezza selvaggia, questa sciocchezza assoluta e un codice francamente delirante che mi ha spinto a scrivere questo articolo. Qui cercherò di spiegare cos'è Last-Modified, perché è necessario e come lo utilizzano i browser e i motori di ricerca.

    Cos'è l'ultima modifica

    Il server web, quando trasmette informazioni al client (browser o robot di ricerca), 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, emette un errore 404 e se viene ricevuta una richiesta If-Modified-Since, emette un codice 304 se la pagina non è cambiata dalla 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 normale richiesta. Cioè, l'intestazione Last-Modified con l'ora corrente e anche formattata in modo errato (ciao Integate!) Non è affatto necessaria!

    Quindi l'ultima modifica è necessaria o no?

    Generalmente necessario. Ma è importante capire che non è l'intestazione stessa a svolgere alcun ruolo, ma l'intero scenario delle richieste condizionali, che deve essere implementato dal sito fino alla fine. È in questo caso che otterremo un'elevata velocità di indicizzazione del sito.

    Ma spesso è molto difficile implementarlo in un CMS finito. Forse ciò richiederà modifiche piuttosto significative nel codice del CMS stesso.

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

    Diamo un'occhiata al lavoro. Ho abilitato questo plugin, aperto il browser in modalità anonima e fatto due richieste per la stessa pagina. Si vede chiaramente che la seconda risposta è corretta - 304 Non modificato:

    Invece di una conclusione

    Quindi, abbiamo capito l'intestazione Last-Modified. In primo luogo, deve fornire informazioni sulla data e l'ora in cui il documento è stato effettivamente modificato. In secondo luogo, la reazione del server alla richiesta condizionale con l'intestazione If-Modified-Since è estremamente importante.

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

    Senso se modificato da alloraè che il motore di ricerca (scrivono su Internet che oggi i browser possono farlo, non l'hanno controllato) entrando nella pagina hanno letto il titolo Ultima modifica(ora dell'ultima modifica del documento). Alla richiesta successiva il motore di ricerca invia una data ricordata, compito del sito è verificare se la pagina è stata aggiornata rispetto alla volta precedente, e se le date coincidono rispondere con un titolo 304 Non modificato e interrompere l'esecuzione dello script. Queste intestazioni aumenteranno la velocità di reindicizzazione del sito.

    Come aggiungere un if modificato dall'intestazione

    Se il tuo sito non ha ancora intestazione se modificata da allora, modifica il file:
    /inc/_func.php trova (~220+ riga)

    ) if(!getvars())( ... ) Aggiungi sotto per renderlo così: ) if(!getvars())( ... )else( $a=array(); if(isset($a[ $g ->item(0).$g->item(1).$g->item(2)])) $t=time();//TIME;//in seguito else( $t=filemtime ( $g->file); if(isset($_SERVER["HTTP_IF_MODIFIED_SINCE"]) && strtotime($_SERVER["HTTP_IF_MODIFIED_SINCE"])>=$t)( header("HTTP/1.1 304 non modificato"); die ( ); ) ) header("Ultima modifica: ".gmdate("D, d MYH:i:s \G\M\T",$t)); )

    Se il sito ha sezioni dinamiche: recensioni, catalogo prodotti, ecc. aggiungi i loro nomi all'array $a, puoi prenderli dalla barra degli indirizzi del browser o nel menu di modifica della sezione del pannello di controllo --> link.

    $a=array("recensioni"=>1); $a=array("recensioni"=>1,"catalogo"=>1);

    Come controllare 304 non modificato e se modificato da allora

    1) Puoi controllare il 304 non modificato e se modificato poiché le intestazioni utilizzando il servizio di controllo della risposta del server in Yandex Webmaster https://webmaster.yandex.ru/server-response.xml . Seleziona la casella "aggiungi intestazione If-Modified-Since" e inserisci una data lì un'ora fa dovrebbe restituire il codice di stato https: "304 Not Modified". Quindi, imposta la data un giorno fa: otteniamo lo stato Codice di stato https: "200 OK". Wow funziona tutto.
    Naturalmente, la pagina di test deve essere modificata prima di eseguire il test.


    2) Un metodo più semplice https://last-modified.com/en/if-modified-since.html . Inseriamo l'indirizzo e voilà, lì tutto in russo scriverà ciò che si trova ciò che non si trova.

    304 non modificato non trovato

    intestazione http se modificato da allora si troverà in ogni caso, ma lo stato del secondo può essere così: 304 non modificato non trovato, secondo il 2° metodo di verifica, secondo il 1° in Yandex, mostrerà semplicemente il 200°.
    Molto probabilmente, il problema è che le intestazioni non vengono trasmesse tramite l'ultimo server proxy modificato di nginx 304 o Apache no.

    Non vedo un problema del genere ora, con Apache 2.2.27, ma per ogni evenienza per il pacchetto Apache + php, questo viene risolto in due modi, se php non è installato come cgi:

    Htaccess in fondo portiamo al form: 1) Solo in php RewriteRule (.*) index.php?q=$1 2) Per tutti i file RewriteRule (.*) index.php?q=$1 RewriteRule .* - # RewriteRule .* -

    304 nginx non modificato

    È un po' più complicato qui, quindi l'intestazione di back-end viene trasmessa, deve essere raccontata da essa. Se nginx è in esecuzione come server proxy, proverei prima a passare a HTTP 1.1 - proxy_http_version 1.1; Nginx interagisce con Apache per impostazione predefinita su 1.0. Ma ad esempio, su uno dei miei server, non sono riuscito a raggiungere questo obiettivo in un tempo ragionevole, come proxy per la restituzione della statica, c'era un modulo per il sipanel Nginx Admin (v4.8 Stable). Ho risolto semplicemente rimuovendo il modulo con il front-end.

    Posizione / ( chunked_transfer_encoding disattivato; proxy_http_versione 1.1; proxy_pass https://localhost:9001; proxy_buffering disattivato; proxy_set_header X-Real-IP $indirizzo_remoto; proxy_set_header Host $host:9001; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connessione "upgrade"; proxy_set_header Upgrade presa web; #? )

    Se stiamo parlando di un server separato per il sito, le configurazioni possono essere diverse:

    Posizione ~ \.php$ ( if_modified_since off; # Sul sito nginx, qualcuno ha scritto che # questo è già disabilitato per gli script, questo flag disabilita il controllo interno, prova .. fastcgi_pass fcgi; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /percorso/ web $fastcgi_script_name; fastcgi_pass_header Ultima modifica; include fastcgi_params; )

    Al momento non ho dove sperimentare, quindi lo mando ulteriormente a Google, cerco:

    Proxy_set_header If-Modified-Since $http_if_modified_since; proxy_pass_header Se-Modificato-dal; fastcgi_param Se-Modificato-dal; underscores_in_headers su; ignore_invalid_headers disattivato;

    Se qualcuno ha configurazioni funzionanti scrivi a posta Lo posterò.

    Articoli correlati in alto