Kako podesiti pametne telefone i računare. Informativni portal
  • Dom
  • Zanimljivo
  • Last-Modified header, Symfony i ubrzanje indeksiranja pretraživanja. SEO mitovi: Sve o posljednjem modificiranom zaglavlju

Last-Modified header, Symfony i ubrzanje indeksiranja pretraživanja. SEO mitovi: Sve o posljednjem modificiranom zaglavlju

U ovom članku ćemo konfigurirati najvažnije zaglavlje odgovora servera - Last-Modified, zbog čega će se opterećenje na serveru smanjiti za 20-30%, a indeksiranje vaše stranice značajno će se ubrzati. Također ćemo naučiti vaš server da izda grešku 304 kada robot za pretragu odnosi se na vašu web lokaciju sa zaglavljem If-Modified-Since.

Zašto nam je potrebno zaglavlje Last-Modified?

Prije svega, želio bih razgovarati o značaju Last-Modified header. Ali, kako praksa pokazuje, uz izuzetan značaj i nužnost, ovaj naslov je nekako univerzalno zaboravljen i potpuno nepravedno potcijenjen. Ako pročitate preporuke tražilice, koji jasno i otvoreno govori o važnosti slanja Last-Modified u zaglavljima (datum posljednje promjene određene stranice), onda nećete sumnjati da se to mora učiniti i što prije to bolje. Ovo posebno važi za resurse sa visokim i srednjim prometom, sa redovno ažuriranim sadržajem. Mada, statične stranice sa 10 stranica mogu i bez toga ovu funkciju Neće imati nikakav negativan uticaj niti vas ometati.

Zaglavlje Last-Modified sadrži GMT datum i vrijeme kada je stranica posljednji put izmijenjena. Svaka stranica ima svoj datum. Gotovo svaki od postojećih CMS-ova sada sprema datum kada su stranice ili postovi uređivani, a datum ažuriranja stranice se također mijenja kada je neko ostavio indeksirani komentar (sve ovisi o vašem specifične postavke). Ali iz nekog razloga ne svi savremeni sistemi administracije predviđaju slanje istog datuma izmjene stranice kao zaglavlje i, štoviše, ne reagiraju ni na koji način na primljeno zaglavlje If-Modified-Since, ali o tome nešto kasnije.

Činjenica je da robot za pretraživanje često može otići na redovno ažuriranu stranicu i skenirati njene stranice po prioritetu, ponekad čak morate postaviti parametar za odlaganje indeksiranja u robots.txt kako biste malo ublažili žar previše aktivnih roboti preopterećuju nesrećni server, a ponekad naprotiv, ljudi naporno rade mesecima bez ikakvih rezultata, samo da bi povećali učestalost poseta robota pretraživača sajtu. Ako takva web stranica ne kaže pretraživaču kada su stranice posljednji put promijenjene i jesu li se uopće promijenile od posljednje posjete, on će zauzvrat proći kroz stranice iznova i iznova kao da su se promijenile, iako to može nije slučaj. A pošto je broj stranica učitanih u jednoj posjeti bota za pretraživanje ograničen, možda jednostavno neće doći do vaših novih članaka i otići kući, jer je potrošio ograničenje na starim stranicama koje uopće nisu ažurirane. Nesumnjivo je da će prije ili kasnije skener ipak doći do novih stranica, ali će to biti mnogo kasnije. Ovo treba zapamtiti kao aksiom, a ko ne vjeruje, čita o posljednjim promjenama na web stranici Yandexa.

Isto važi i za obične posetioce sajta, jer ako je vaš stari članak u lokalnoj predmemoriji, a server ne pošalje zaglavlje 304 Not Modified, onda će se ono učitavati iznova i iznova, svaki put ispočetka, čime se povećava opterećenje na server. Ako s vremena na vrijeme posljednja posjeta neke stranice i dodavanjem u keš memoriju, ništa se nije promijenilo, potrebno je da vaš server pošalje zaglavlje 304 Not Modified u odgovoru i zaustavi dalje generiranje stranice. Zašto svaki put učitavati stare stranice ako se na njima ništa nije promijenilo? Njihov sadržaj se može preuzeti iz keša. Elementarno i efikasno!

Odgovor servera na zaglavlje If-Modified-Since

Glatko smo prišli drugom, ni manje ni više važna tačka- reakcija vašeg servera na zaglavlje If-Modified-Since koje su poslali botovi za pretraživanje. Oni to rade kako bi provjerili da li se vaša stranica promijenila od posljednje posjete i zapravo prenijeli ovo vrijeme u naslovu. Vaš server tada mora odgovarati vremenu posljednje ažuriranje stranicu kojoj je bot pristupio i vrijeme njegove posljednje posjete, koje vam kaže. Ako se od tada na stranici nije pojavilo ništa novo, server bi trebao odgovoriti sa zaglavljem 304 Not Modified i zaustaviti prijenos podataka izlaskom iz izvršne skripte (u slučaju PHP-a, ovo je funkcija Izlaz). Nakon što je dobio odgovor 304, robot za pretragu će shvatiti da za sada nema više šta da radi i otići će na sljedeća stranica, čime se štedi mnogo vremena.

Zahvaljujući tome, indeksiranje vašeg sajta je znatno brže i takođe smanjuje nepotrebno opterećenje servera.

Želio bih dodati da smo u jednom od naših članaka ispitali drugi zanimljiv način ubrzati indeksiranje stranice. Tamo smo razgovarali konkretno o lokacijama na WordPress engine i za to smo koristili posebne ping servere, čije smo adrese dali i naznačili šta sa njima treba raditi.

PHP funkcija

Dakle, prijeđimo odmah na stvar i pogledajmo funkciju koju su razvili naši stručnjaci i uspješno testiranu na nekoliko lokacija:

Funkcija lastModified($gmdate) ( $IfModifiedSince = false; if (isset($_ENV["HTTP_IF_MODIFIED_SINCE"]) ili isset($_SERVER["HTTP_IF_MODIFIED_SINCE"])) ( $IfModifiedSince = false; if (isset($_ENV["HTTP_IF_MODIFIED_SINCE"]) ili isset($_SERVER["HTTP_IF_MODIFIED_SINCE"])) ( $IfModifiedSince($IfModifiedSince($_ENV_strtotime) " "] ? $_ENV["HTTP_IF_MODIFIED_SINCE"] : $_SERVER["HTTP_IF_MODIFIED_SINCE"]), 5)); ) if ($IfModifiedSince && $IfModifiedSince >= strtotime($gmdate))) (zaglavlje[OLCPRO_S_VER) ] ." 304 Nije izmijenjeno"); exit; ) header("Posljednja izmjena: ".$gmdate); )

Želio bih naglasiti da funkcija uzima GMT datum i vrijeme kao jedini argument - gmdate() , a ne datum(), nemojte se zbuniti. Argument koji funkcija prima je datum i vrijeme posljednje izmjene stranice. Gdje ćete ga nabaviti zavisi od administrativnog sistema, na primjer, u WordPress-u možete ga dobiti ovako:

$WordpressPageLastModified = get_the_modified_date("r");

Šta ako ne postoji sistem administracije i mi pričamo o tome o statičkoj web stranici na kojoj se promjene vrše ručno, direktno u kodu. U ovom slučaju došli smo i do rješenja da u zaglavlju pošaljemo datum posljednje promjene:

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

IN u ovom slučaju koristimo funkciju filemtime(), koji vraća vrijeme kada je datoteka posljednji put uređena u Unix vremenskom formatu.

Usput, ne preporučujemo da izmišljate ovaj datum iz glave, čak i ako je vaša stranica sve ovo vrijeme ostala statična. Ovaj trik neće dovesti ni do čega dobrog, jer... pretraživači će i dalje provjeravati da li se stranica zaista promijenila i mogu vas kazniti jer ste ih doveli u zabludu.

Provjera odgovora servera

Na Internetu postoji nekoliko servisa za provjeru odgovora servera, ali, kako se ispostavilo, ne rade svi to ispravno i ne dozvoljavaju vam svi da pratite ponašanje vašeg servera kao odgovor na preneseni If-Modified- Od zaglavlja, ali moramo biti sigurni da server šalje zaglavlje 304 Nije izmijenjeno ako stranica nije ažurirana od posljednje posjete.

Odgovor servera možete provjeriti na našoj web stranici, ali za najpotpuniju sliku i dalje preporučujemo korištenje službene usluge Yandex. Tamo možete odrediti sva potrebna zaglavlja, kao i odabrati fiktivno vrijeme posljednje posjete. Yandex će vam također omogućiti da odaberete vrstu bota za pretraživanje, ali da biste koristili ovaj alat morate dodati i potvrditi prava za upravljanje web-mjestom u Yandex.Webmasteru, što, da budemo iskreni, uvijek treba uraditi prvo.

Zašto konfigurirati zaglavlje Last-Modified. Pokušajmo shvatiti kako konfigurirati Last-Modified zaglavlje što je brže i jednostavnije moguće.

Za početak, reći ću da je to prije svega potrebno kako bi se smanjilo opterećenje servera i ubrzalo indeksiranje stranica. Zbog toga je potrebno konfigurirati Last-Modified header, posebno za velike resurse sa veliki iznos stranice.

Svrha ovog zaglavlja je da klijentu (pretraživaču ili pretraživaču) saopšti informacije o tome najnovije promjene određena stranica. Klijent šalje zaglavlje If-Modified-Since serveru. Ako se na stranici ne otkriju nikakve promjene, server se vraća zaglavlje “304 Not Modified”. Međutim, stranica se ne učitava.

Ako su promjene napravljene, to će biti uzeto u obzir, a server će vratiti zaglavlje “200 OK” (stranica će se učitati s ažuriranim sadržajem).

Ispravno postavljanje Last-Modified pruža sljedeće prednosti:

  • rezultati pretrage prikazuju datum posljednjeg ažuriranja sadržaja stranice;
  • Kada se u pretraživaču sortiraju po datumu, stranice zauzimaju više pozicije;
  • Indeksiranje stranica je značajno ubrzano.
  • Zašto roboti brže indeksiraju web lokacije s konfiguracijom Last-Modified?

    Odgovor je jednostavan: ako je promijenjeno samo 20 stranica na stranici, onda robot ne mora indeksirati svih 500 u potrazi za novim sadržajem, jer će Last-Modified označiti stranice s promjenama.

    Last-Modified je posebno važan za resurse sa velikim brojem stranica, jer robot ima vremena da indeksira svaku stranicu. ograničena količina vremena, a možda neće imati vremena da dođe do potrebnih stranica.

    Kako postaviti Last-Modified

    Prvo morate provjeriti da li ste konfigurirali ovo zaglavlje. Da biste to učinili, možete koristiti usluge varvy.com, last-modified.com ili tools.seo-auditor.com.ru. Ako provjera pokaže odsustvo zaglavlja, trebali biste početi s njegovim postavljanjem.

    Ako imate statičnu stranicu, tada za svaku stranicu trebate napisati kod koji vidite na ekranu:

    Nakon svake promjene sadržaja, ručno mijenjamo datum u kodu. A šta se dešava svaki put, pitate me? Da, ako je stranica statična.

    Ako je sajt dinamičan, onda koristimo postavku u PHP-u. Često se susreće sljedeći kod:

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

    Mora se dodati u header.php. Ali radit će samo za postove i stranice i neće raditi na glavnoj stranici. Također ne vrijedi za taksonomije, arhive ili brojanje novih komentara.

    $LastModified_unix = 1294844676;

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

    $IfModifiedSince = netačno;

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

    Ako ($IfModifiedSince && $IfModifiedSince >= &LastModified_unix) (

    header($_SERVER['SERVER_PROTOCOL'] . '304 Nije modificirano');

    header('Posljednja izmjena: ' . $LastModified);

    Također možete prilagoditi zaglavlje tako što ćete napisati dva reda u .htaccess fajl:

    RewriteRule .* —

    RewriteRule .* —

    Ali u ovom slučaju morate provjeriti da li će biti problema na strani hostinga.

    Kako ne biste pisali kodove, možete koristiti gotova rješenja za podešavanje Last-Modified. Na primjer, za CMS WordPress postoje dodaci Clearfy i Last Modified Timestamp. Podešavanje se može obaviti pomoću dodatka WP Super Cache. Da biste to učinili, u naprednim postavkama aktivirajte stavku "Greška 304" (podrška za 304 odgovore je onemogućena prema zadanim postavkama, jer mogu nastati problemi na nekim web lokacijama za hosting). Drugi CMS-ovi također imaju svoje dodatke, ili, u krajnjem slučaju, možete naručiti dodatak od programera.

    Treba imati na umu da postavka Last-Modified nije uvijek korisna (na primjer, kada svaka stranica ima blok informacija od kraja do kraja sa sadržajem istog sadržaja koji se redovno mijenja). U tom slučaju, pretraživači mogu prestati da percipiraju informacije kao nove i rjeđe će posjećivati ​​vašu stranicu.

    U drugim slučajevima, konfiguracijom Last-Modified, dobijate:

    • uštede u saobraćaju;
    • ubrzati web stranicu;
    • slijedite preporuke Google i Yandex pretraživača, što značajno ubrzava indeksiranje i povećava vidljivost stranica u pretrazi. To je posebno vidljivo na resursima s velikim brojem stranica.

    Mnogi programeri prilikom izrade web stranica zaborave na vrlo korisno Last-Modified header, zahvaljujući kojem možete optimizirati učitavanje web stranica i olakšati rad robotima za pretraživanje. Zatim ću pokušati da popunim ovu dosadnu prazninu.

    Čemu služi zaglavlje Last-Modified?

    Funkcija zaglavlja, kao što možete pretpostaviti iz naziva, je da obavijesti klijenta o datumu posljednje izmjene web dokumenta. Na osnovu RFC 2616 specifikacije, klijent može „pitati“ web server da li se stranica promijenila od određenog datuma tako što će serveru poslati zaglavlje „If-Modified-Since“. Ako se stranica nije promijenila, server vraća samo zaglavlje “304 nije modificirano”, u suprotnom, server vraća zaglavlje “200 OK” i tijelo stranice. Kao što vidite, postoji prednost i za server i za klijenta: pretraživač neće učitavati stranicu iznova i iznova, a web server će pružiti manje podataka.

    Koje stranice su bolje indeksirane? Dinamički ili statični?

    Prije nekoliko godina vodila se debata među SEO-ima o tome koje su stranice bolje indeksirane? Dinamičke, napisane na primjer u PHP-u, ili statične, bez upotrebe programskih jezika. Poznavanje zaglavlja Last-Modified može odgovoriti na ovo pitanje. Stvar je u tome da sam web server obrađuje zaglavlje “If-Modified-Since” ako je datoteka statična. U slučaju dinamičkog generisanja stranica, sva odgovornost za odgovor pada na programski jezik i programera. A pošto programer često nije zainteresovan za ovo pitanje, zaglavlja uopšte nisu data.

    Kako zaglavlje Last-Modified ubrzava indeksiranje pretraživanja?

    Jednostavno je, kako piše u pomoći Yandexa, „robot neće moći dobiti informacije o tome da li je stranica ažurirana od posljednjeg indeksiranja. A budući da je broj stranica koje robot dobije sa stranice u jednoj posjeti ograničen, promijenjene stranice će se rjeđe ponovno indeksirati.”

    Zamislite. Postoji web stranica sa 10 hiljada stranica. Sajt je napisan u PHP-u. Zaglavlje Last-Modified nije vraćeno ispravno. Robot za pretraživanje ne može dobiti informacije o tome da li je stranica stranice ažurirana od posljednjeg indeksiranja. Šta on radi? Indeksira sve stranice!!! I ne samo one koje su se promenile.
    Svakako! Mnoge web stranice koriste Sitemap. Ali Sitemap je preporuka, pomoć optimizatoru pretraživača. Ne može biti zamjena za Last-Modified header!

    Postavljanje i rukovanje Last-Modified zaglavljem u php

    Da bi web server proslijedio If-Modified-Since zaglavlje php-backendu, morate mu reći o tome!

    Za kombinaciju nginx + php to je ovako:

    lokacija ~ \.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;
    uključiti fastcgi_params;
    }

    Za kombinaciju apache + php, ovako

    #Ako-Modificirano-Od ( ako php nije instaliran kao cgi onda komentirajte redove ispod)
    RewriteRule .* -
    RewriteRule .* -

    * Ovaj izvorni kod je istaknut sa izvornim kodom Highlighter.


    Ako php radi kao modul, onda ne morate ništa da konfigurišete!

    Jednostavan php kod za rukovanje zahtjevom If-Modified-Since,

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

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

    if ($hdr == $promijenjeno)
    {
    header("HTTP/1.1 304 nije modificirano");
    header("Posljednja izmjena: $promijenjeno");
    Izlaz();
    }
    header("Posljednja izmjena: $promijenjeno");
    //render

    * Ovaj izvorni kod je istaknut sa izvornim kodom Highlighter.

    Kako postupati sa zahtjevom If-Modified-Since u Symfonyju?

    symfony već ima mehanizam za obradu zaglavlja. Sve što programer treba da uradi je da prosledi zaglavlje objektu sfWebResponse. Ako to navedete, okvir će sve uraditi sam.
    $datestamp = vrijeme();
    $response->setHttpHeader("Last-Modified" , $response->getDate($datestamp));

    * Ovaj izvorni kod je istaknut sa izvornim kodom Highlighter.


    Budući da stranica obično sadrži različit sadržaj, napisao sam metodu koja postavlja najnovije od prenesenih zaglavlja!
    statička javna funkcija setLastModified($datestamp)
    {
    $response = sfContext::getInstance()->getResponse();
    $request = sfContext::getInstance()->getRequest();

    if (is_array($datestamp))
    {
    rsort($datemark, SORT_NUMERIC);
    $datestamp = $datestamp;
    }

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

    * Ovaj izvorni kod je istaknut sa izvornim kodom Highlighter.


    Vrlo je zgodno koristiti ako, na primjer, stranica sadrži posljednja 3 videa, posljednja 3 članka i nešto drugo. Učitavanjem svakog modela iz baze podataka možemo pozvati metodu i na kraju primiti najnoviji datum izmjene u odgovoru.
    Za one koji su zainteresovani, kod za obradu zaglavlja je u klasi sfCacheFilter.class.php.

    U zaključku, želio bih reći da korištenje Last-Modified zaglavlja nije uvijek opravdano. Na primjer, ako postoji 5 hiljada stranica na web mjestu i svaka sadrži isti blok sa sadržajem koji se često mijenja, korištenje zaglavlja će biti beskorisno! U ovom slučaju možete dati samo različita zaglavlja za klijente i robote za pretraživanje. Ali što se mene tiče, obmanjivanje robota ne vodi ničemu dobrom. Pa, ili uklonite ovaj blok;).

    Možete provjeriti da li web lokacija ispravno obrađuje zaglavlje

    Postoji mnogo različitih mitova koji plutaju okolo na polju optimizacije za pretraživače web stranica (SEO). Neki od njih imaju osnovu, neki su došli niotkuda. U ovoj napomeni ćemo pogledati jedan od njih - koristeći zaglavlje odgovora posljednje izmjene.

    Prije nekog vremena dobili smo dokument pod naslovom “Ingate preporuke za web studije na promoviranim stranicama.” A jedna od “preporuka” je bila sljedeća:

    Nakon redizajna ili na novom sajtu koji se razvija, mora se navesti datum poslednje izmene stranica sajta (Last Modified).

    Da biste dodali informacije o datumu posljednje izmjene stranica na PHP web stranici, morate umetnuti skriptu na samom početku izvornog koda svake stranice

    header("Posljednja izmjena: " . date("D, d M Y H:i:s", vrijeme()) . " GMT");
    ?>

    Upravo me ta divlja glupost, ta potpuna besmislica i iskreno luda šifra potaknula da napišem ovu bilješku. Ovdje ću pokušati objasniti šta je Last-Modified, zašto je potreban i kako ga pretraživači i pretraživači koriste.

    Šta je Last-Modified

    Prilikom prijenosa informacija klijentu (pretraživaču ili robotu za pretraživanje), web server prijavljuje dosta dodatnih podataka. Mogu se pogledati u konzoli pretraživača, na primjer:

    konfigurirajte server da izda ispravna zaglavlja odgovora (na primjer, ako stranica ne postoji, izdajte grešku 404, a ako je primljen zahtjev If-Modified-Since, onda izdajte kod 304 ako stranica nije promijenjena od datum naveden u zahtjevu).

    Također možete vidjeti da ako server ni na koji način ne odgovori na uslovni GET zahtjev, onda se to ne razlikuje od običnog zahtjeva. Odnosno, zaglavlje Last-Modified sa trenutnim vremenom, koje je takođe pogrešno formirano (zdravo Integgate!) uopšte nije potrebno!

    Dakle, da li je Last-Modified neophodna ili ne?

    Općenito potrebno. Ali važno je shvatiti da nije samo zaglavlje ono koje igra nikakvu ulogu, već cijeli scenarij uvjetnog zahtjeva, koji mora biti u potpunosti implementiran od strane stranice. U tom slučaju ćemo dobiti veliku brzinu indeksiranja web stranice.

    Ali često je vrlo teško to implementirati u gotov CMS. Ovo može zahtijevati prilično značajne promjene u kodu samog CMS-a.

    Iako se za određeni broj CMS-a to može postići omogućavanjem keširanja stranica. Ako CMS kešira stranice, stvarajući i servirajući u suštini statične datoteke, tada će sam web server ispravno odgovoriti na uslovne zahtjeve. Na primjer, u WordPressu se to može postići korištenjem dodatka WP Super Cache:

    Provjerimo to na djelu. Omogućio sam ovaj dodatak, otvorio pretraživač u anonimnom načinu i napravio dva zahtjeva za istu stranicu. Jasno se vidi da je drugi odgovor tačan - 304 Nije izmijenjeno:

    Umjesto zaključka

    Dakle, pozabavili smo se zaglavljem Last-Modified. Prvo, mora sadržavati informacije o datumu i vremenu kada je dokument stvarno izmijenjen. Drugo, odgovor servera na uslovni zahtjev sa zaglavljem If-Modified-Since je izuzetno važan.

    Pa, manje slušajte SEO-ove koji ne znaju osnove kako internet funkcionira.

    Značenje ako je od tada izmijenjeno je da pretraživač (na internetu pišu da to mogu i pretraživači, nisam provjerio) pri ulasku na stranicu pročitaju naslov zadnja izmjena(vrijeme posljednje izmjene dokumenta). Sljedeći put kada pristupite, pretraživač šalje zapamćeni datum, zadatak stranice je da provjeri da li je stranica ažurirana od prethodnog puta i, ako se datumi poklapaju, odgovori naslovom 304 Nije izmijenjeno i zaustavi izvršavanje skripte. Ova zaglavlja će povećati brzinu ponovnog indeksiranja stranice.

    Kako dodati naslov ako je od tada izmijenjen

    Ako vaša stranica već nema zaglavlje ako je od tada izmijenjeno, uredite fajl:
    /inc/_func.php pronađi (~220+ redova)

    ) if(!getvars())( ... ) Dodajte ispod da bi izgledalo ovako: ) if(!getvars())( ... )else( $a=array(); if(isset($a [$g ->item(0).$g->item(1).$g->item(2)])) $t=time();//TIME;//in kasnije else( $t= filemtime( $g->file); if(isset($_SERVER["HTTP_IF_MODIFIED_SINCE"]) && strtotime($_SERVER["HTTP_IF_MODIFIED_SINCE"])>=$t)( header("HTTP/1.1 304 nije izmijenjen"); die( ); ) ) header("Posljednja izmjena: ".gmdate("D, d M Y H:i:s \G\M\T",$t)); )

    Ako stranica ima dinamičke odjeljke: recenzije, katalog proizvoda itd. dodajte njihova imena u niz $a, možete ih preuzeti sa adresne trake pretraživača ili u meniju za uređivanje kontrolne table --> link.

    $a=array("recenzije"=>1); $a=array("reviews"=>1,"catalog"=>1);

    Kako provjeriti da 304 nije izmijenjeno i ako je modificirano od tada

    1) Možete provjeriti zaglavlja 304 nije izmijenjena i ako je promijenjena od odgovora servera za provjeru usluge u Yandex webmasteru https://webmaster.yandex.ru/server-response.xml. Označite kućicu "dodaj zaglavlje If-Modified-Since" i stavite datum prije sat vremena i trebao bi dati statusni kod https: "304 Not Modified". Zatim postavite datum na prije dan - dobijamo status statusnog koda https: "200 OK". Ura sve radi.
    Naravno, stranica za testiranje se mora promijeniti prije testiranja.


    2) Jednostavnija metoda https://last-modified.com/ru/if-modified-since.html. Ubacujemo adresu i voila, tamo će sve biti napisano na ruskom, šta je pronađeno, a šta nije pronađeno.

    304 nije modificirano nije pronađeno

    Naslov http ako je promijenjen od tadaće se u svakom slučaju naći, ali status drugog može biti ovakav: 304 nije modificirano nije pronađeno, prema 2. metodi verifikacije, prema 1. metodi u Yandexu jednostavno će prikazati 200.
    Najvjerovatnije je problem što se zaglavlja ne prenose preko proxy servera nginx 304 posljednji modificirani ili Apache ne prenosi.

    Sada ne vidim takav problem, sa Apacheom 2.2.27, ali za svaki slučaj, za kombinaciju Apache + php, ovo se može riješiti na dva načina ako php nije instaliran kao cgi:

    Htaccess na samom dnu dovodimo do forme: 1) Samo u php RewriteRule (.*) index.php?q=$1 2) Za sve fajlove RewriteRule (.*) index.php?q=$1 RewriteRule .* - # RewriteRule .* -

    304 nije modificiran nginx

    Ovdje je malo složenije; da bi se zaglavlje prenijelo na back-end, morate mu reći o tome. Ako nginx radi kao proxy server, prvo bih pokušao da se prebacim na HTTP 1.1 - proxy_http_version 1.1; Nginx komunicira sa Apacheom koristeći standardno 1.0. Ali na primjer, na jednom od mojih servera nisam to mogao postići u razumnom roku; proxy za statičku isporuku bio je modul za Nginx Admin sipanel (v4.8 Stable). Odlučio sam jednostavno ukloniti modul sa prednjim dijelom.

    Lokacija / ( chunked_transfer_encoding off; proxy_http_version 1.1; proxy_pass https://localhost:9001; proxy_buffering off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host:9001; proxy_head upgrade proxy_set Connection; proxy_head_set proxy_set xy_set_header Nadogradnja websocket; #?)

    Ako govorimo o zasebnom serveru za web stranicu, konfiguracije mogu biti različite:

    Lokacija ~ \.php$ ( if_modified_since off; #Na nginx web stranici neko je napisao da je # ovo već onemogućeno za skripte, ova zastavica onemogućava internu provjeru, pokušajte.. fastcgi_pass fcgi; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /path/ web $fastcgi_script_name; fastcgi_pass_header Last-Modified; uključi fastcgi_params; )

    Trenutno nemam gdje eksperimentirati, pa šaljem dalje na Google i tražim:

    Proxy_set_header If-Modified-Since $http_if_modified_since; proxy_pass_header If-Modified-Since; fastcgi_param If-Modified-Since; underscores_in_headers on; ignore_invalid_headers off;

    Ako neko ima radne konfiguracije neka piše mail Ja ću to objaviti.

    Najbolji članci na ovu temu