Denne siden ble sist endret i 1576. En blogg som har mye interessant informasjon... Få fart på indeksering av søkemotorer

HTTP-overskrift Sist endret (siste endringer) overfører tid til klienten siste endring dokument (nettside). Klienten (nettleser eller søkerobot) sender overskriften " Hvis-modifisert-siden" og hvis datoen siden sist ble endret samsvarer, returnerer serveren overskriften " 304 Ikke endret" og laster ikke inn siden. Hvis den siste endrede tiden er annerledes (eller den siste endrede overskriften ikke er konfigurert) - returnerer serveren overskriften " 200 OK" og laster siden. Det vil si at i stedet for å laste siden på nytt og oppdatere cachen, mottar klienten kun topptekst 304. Klienten sparer trafikk, og serveren sender mindre data - gjensidige besparelser.

Men hvorfor skulle det være denne artikkelen hvis ikke for å snakke om fordelene som innstilling av Last-Modified-overskriften gir for, eller mer presist, for å øke hastigheten på nettstedindeksering. Det er ikke vanskelig å gjette at 10 sider på et nettsted vil bli indeksert raskere enn 1000. Det samme prinsippet som lar deg optimalisere sideinnlasting fungerer også for indeksering. En søkemotor trenger ikke å indeksere 1000 sider for å finne 10 nye sider. Takket være sist endrede, lar vi bare nye sider (eller oppdaterte) for roboten. Roboten kommer til stedet og tar først det den trenger, og deretter alt det andre.

Stille inn overskriften sist endret

Sørg for at http-overskriftene dine er riktige. Det som er viktig er spesielt innholdet i svaret som serveren gir på forespørselen "hvis-endret-siden". Toppteksten Sist endret må angi den korrekte datoen da dokumentet sist ble endret. Selv om serveren ikke viser den siste endrede datoen for dokumentet, vil nettstedet ditt bli indeksert. Men i dette tilfellet bør du vurdere følgende: - søkeresultatene vil ikke vise datoen ved siden av sidene på nettstedet ditt; - når du sorterer etter dato, vil nettstedet ikke være synlig for de fleste brukere; - roboten vil ikke kunne få informasjon om hvorvidt sidesiden har blitt oppdatert siden siste indeksering. Og siden antall sider en robot mottar fra et nettsted på ett besøk er begrenset, vil endrede sider sjeldnere bli reindeksert. Sørg for at webserveren din støtter HTTP-headeren "Hvis-modifisert-siden". Denne overskriften lar webserveren fortelle Google om nettstedets innhold har endret seg siden forrige gang det ble gjennomsøkt. Støtte for denne funksjonen reduserer overhead og båndbreddebruk.

Her er eksempler på hvordan du konfigurerer den siste modifiserte overskriften som skal sendes og Hvis-Modified-Since skal håndteres riktig.

Hvordan sette opp meta Last-Modified for statiske HTML-sider

Hvordan sette opp Last-Modified i php

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

Hvordan konfigurere Last-Modified .htaccess

RewriteRule .* - RewriteRule .* -

Hvordan konfigurere Last-Modified nginx + php

plassering ~ .php$ ( ... if_modified_since off; fastcgi_pass fcgi; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /<путь >/web$fastcgi_script_name; ... fastcgi_pass_header Sist endret; inkluderer fastcgi_params; )

Sjekk Sist endret

Når overskriften sendes til klienten er konfigurert, skader det ikke sjekk sist endret for korrekthet. Du kan sjekke Last-Modified på din egen eller en tredjeparts nettside gjennom nettbaserte tjenester.

Eller foreta din egen sjekk for korrekt behandling av Last-Modified-overskriften:

Stille inn overskriften sist endret og behandling av If-Modified-Since-overskriften vil være ekstremt nyttig for ethvert større eller mindre nettsted. Behandlingshastigheten til nettsider kan bli betydelig. Relativt enkelt oppsett vil ikke skape problemer, spesielt siden for populære CMS-er som joomla, wordpress, modx, etc. det finnes ferdige løsninger.

Det er mange forskjellige myter som flyter rundt innen søkemotoroptimalisering av nettsteder (SEO). Noen av dem har et grunnlag, noen av dem kom fra ingensteds. I dette notatet vil vi se på en av dem - ved å bruke den siste modifiserte svaroverskriften.

For en tid siden mottok vi et dokument med tittelen "Ingate-anbefalinger for nettstudioer på markedsførte nettsteder." Og en av "anbefalingene" var følgende:

Etter en redesign eller på en ny side under utvikling, må datoen for siste endring av sidene (Sist endret) angis.

For å legge til siden på PHP informasjon datoen for siste endring av sidene er nødvendig helt i begynnelsen kildekode sett inn et skript på hver side


header("Sist endret: " . date("D, d M Y H:i:s", tid()) . " GMT");
?>

Det var dette ville tullet, dette fullstendig tullet og ærlig talt gale koden som fikk meg til å skrive denne lappen. Her skal jeg prøve å forklare hva Last-Modified er, hvorfor det trengs og hvordan nettlesere og søkemotorer bruker det.

Hva er sist endret

Ved overføring av informasjon til klienten (nettlesere eller søkerobot), rapporterer webserveren ganske mye ekstra data. De kan vises i nettleserkonsollen, for eksempel:

konfigurer serveren til å utstede korrekte svarhoder (for eksempel hvis siden ikke eksisterer, utsted en 404-feil, og hvis en If-Modified-Since-forespørsel mottas, utsted en 304-kode hvis siden ikke har blitt endret siden dato angitt i forespørselen).

Du kan også se at hvis serveren ikke svarer på noen måte på en betinget GET-forespørsel, er den ikke forskjellig fra en vanlig forespørsel. Det vil si at Last-Modified-overskriften med gjeldende tid, som også er feil utformet (hei Integgate!) er ikke nødvendig i det hele tatt!

Så er sist endret nødvendig eller ikke?

Generelt nødvendig. Men det er viktig å forstå at det ikke er selve overskriften som spiller noen rolle, men hele det betingede forespørselsscenarioet, som må implementeres fullt ut av nettstedet. Det er i dette tilfellet at vi vil få en høy hastighet på nettstedindeksering.

Men det er ofte svært vanskelig å implementere dette i et ferdig CMS. Dette kan kreve ganske betydelige endringer i koden til selve CMS.

Selv om dette for en rekke CMS kan oppnås ved å aktivere sidebufring. Hvis CMS cacher sider, oppretter og serverer i det vesentlige statiske filer, vil webserveren selv svare riktig på betingede forespørsler. For eksempel, i WordPress kan dette oppnås ved å bruke WP Super Cache-plugin:

La oss sjekke det i aksjon. Jeg aktivert denne plugin, åpnet nettleseren i anonym modus og gjorde to forespørsler for samme side. Det er tydelig at det andre svaret er riktig - 304 Ikke endret:

I stedet for en konklusjon

Dermed har vi behandlet overskriften Last-Modified. Først må den formidle informasjon om datoen og klokkeslettet da dokumentet faktisk ble endret. For det andre er serverens svar på en betinget forespørsel med If-Modified-Since-overskriften ekstremt viktig.

Vel, lytt mindre til SEO-ere som ikke vet det grunnleggende om hvordan Internett fungerer.

En av stadiene for å optimalisere et nettsted for riktig drift og vellykket markedsføring er optimalisering på serversiden. Andre punkter inkluderer å sette opp riktig serversvar på forespørselen "Sist endret". Riktig innstilling av denne parameteren kan øke lastehastigheten til nettstedet og ha en positiv effekt på indekseringen av søkeroboter.

Hva er Last-Modified og hvorfor er det nødvendig?

Som navnet antyder, forteller Last-Modified-overskriften klienten (besøkende på nettstedet) om forrige gang en bestemt side på nettstedet ble endret. Hvis en søkerobot fungerer som en besøkende på nettstedet og det sist endrede svaret på det forespurte dokumentet eller siden ikke er konfigurert (eller konfigurert feil) på nettstedet (serveren), har søkeroboten ikke noe annet valg enn å indeksere alle sider på Internett ressurs igjen og igjen ved hvert besøk, og dermed skape en viss belastning på serveren som ligger på vertssiden. Hva om antall sider er hundrevis eller til og med tusenvis? Avhengig av egenskapene og egenskapene til serveren, er det en mulighet for å støte på en slags feil på vertssiden. I tillegg til dette bør det bemerkes at søkeroboten har en grense på antall sider som indekseres "om gangen", så hvis det ikke er noen riktige innstillinger Last-Modified header, vi risikerer at uendrede sider vil bli indeksert av roboten, men de nye sidene vi trenger vil ikke.

Basert på RFC 2616-spesifikasjonen som beskriver HTML Hypertext Transfer Protocol, kan en klient "spørre" serveren om en side har endret seg siden en bestemt dato ved å sende serveren en "If-Modified-Since"-overskrift. Hvis den forespurte siden ikke er endret, vil serveren returnere en "304 Not Modified"-overskrift og nettleseren vil ikke laste inn siden og webserveren vil ikke sende mye data. Ellers (hvis sidesiden har endret seg siden forrige forespørsel), vil serveren returnere et "200 OK"-svar og direkte koden til selve siden.

I tillegg til det ovennevnte nevner vi Yandex sine anbefalinger: «Roboten vil ikke kunne få informasjon om hvorvidt sidesiden har blitt oppdatert siden siste indeksering. Og siden antall sider roboten mottar fra nettstedet på ett besøk er begrenset, vil endrede sider sjeldnere bli indeksert på nytt.»

TOTAL: Det viktige formålet med «Sist endret»-overskriften er å informere besøkende på nettstedet og søkerobot datoen for siste endring av ethvert dokument.

Hvorfor må du konfigurere Last-Modified på riktig måte?

Ved å konfigurere sist modifiserte serversvar riktig, kan vi oppnå flere positive resultater for nettstedet vårt:

  • Innlastingshastigheten på nettstedet øker for folk: hvis siden allerede har blitt besøkt av brukeren og på tidspunktet for neste besøk siden ikke har endret seg, vil den besøkendes nettleser ikke laste inn siden på nytt, men vil vise sin bufrede kopi;
  • Belastningen på vertsplattformen (serveren) reduseres: med denne driftsalgoritmen vil serveren lastes mye mindre på grunn av behovet for å overføre bare volumet av endrede sider til den besøkende på nettstedet;
  • Datoen for det siste dokumentet i søkeresultatene vises: dette faktum kan tiltrekke besøkende til nettstedet ditt hvis en "ny" dato vises;
  • Sorter etter dato: nettstedssider vil delta i sortering etter dato i søkeresultatene;
  • Indekseringen av nettstedet av søkeroboter akselereres betydelig: På grunn av den raske responsen fra nettstedet ditt om datoen for gjennomsøkte sider, vil gamle (allerede indekserte) sider bli "kastet til side", og gir plass til "ferske" dokumenter. Dette punktet er det viktigste når du markedsfører et nettsted, fordi... høy indekseringshastighet øker tilliten til nettstedet blant søkeroboter.

Hvordan sjekke om Last-Modified er riktig konfigurert?

En av tjenestene der du kan sjekke riktigheten (og faktisk eksistensen) til det konfigurerte siste modifiserte serversvaret, er den eponyme last-modified.com

I inntastingsfeltet må du skrive adressen til nettstedet ditt eller en bestemt side og klikke på "Sjekk"-knappen. Resultatet av tjenesten vil være en demonstrasjon av nettstedets svar på en forespørsel om "Sist endret" og "304 ikke endret"-hodene. Et eksempel på en slik sjekk:

Setter opp Sist endret

La oss se på implementeringen av Last-Modified HTTP-header-svaret i PHP.

På Internett kan du ofte finne følgende anbefalinger for å sette opp Last-Modified:

Jeg vil bare utbryte: "Vi trenger ikke denne typen hockey!" Og la oss finne ut hvorfor. Som svar på en brukerforespørsel, funksjonen gmdate vil returnere den til oss dagens dato Greenwich Mean Time (GMT). Og dette vil skje hver gang med hver forespørsel fra en bruker eller søkerobot - serveren vil returnere nøyaktig sin dagens dato. Det viser seg at hver gang søkemotorer besøker nettstedet ditt, vil de se at den forespurte siden nettopp har blitt oppdatert. Dette kan bare være "nyttig" noen få ganger... Etter en stund vil søkemotoren innse at den blir "lurt" og vil miste all tillit til nettstedet ditt. En slik implementering passer derfor ikke oss.

La oss gå til ressursen ovenfor for å få hjelp. last-modified.com. Den presenterer også en implementering av Last-Modified HTTP-headeren i PHP. Det ser slik ut:

$LastModified_unix = 1294844676;

$IfModifiedSince = usann;



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

La oss se på hvordan denne koden fungerer. Variabel $LastModified_unix settes manuelt i formatet Unix tidsstempel(antall sekunder som har gått siden begynnelsen av Unix-tiden - siden 1. januar 1970).

Funksjon gmdate returnerer gjeldende GMT-tid i formatet Dag, DD Man ÅR TT:MM:SS GMT.

Neste: få tidspunktet siden sist ble endret, se etter tilgjengelighet Hvis-modifisert-siden, hvis det er en, gir vi den bort 304 Ikke endret og stopp manuset. Ellers genererer vi en header Sist endret og overlevere hele siden.

I alternativet ovenfor foreslås det å sette tiden $LastModified_unix manuelt. Men hva om det er mange sider på nettstedet? For å gjøre dette, la oss "modernisere" manuset litt, og erstatte bare den første linjen i det:

$LastModified_unix = strtotime(dato("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 = usann;

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 Ikke endret");
exit;
}

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

I den oppdaterte versjonen konverterer den første kodelinjen tekstrepresentasjonen av datoen til engelske språk til en etikett i formatet Unix tidsstempel, og bruker dermed den automatisk beregnede endringstiden for gjeldende side.

Alt er klart! Nå trenger vi bare å lime inn den resulterende koden i seksjonen ... hver side på nettstedet og nyt høyhastighets sidelasting og indeksering av søkeroboter.

La oss hjelpe deg med å sette opp Last-Modified!

Start med en enkel samtale hos T-Design! Telefonnummeret vårt er 8 499 340-17-82 - fungerer i modus non-stop, slik at du raskt kan motta informasjonen du er interessert i å løse problemene med å utvikle og støtte nettstedet ditt. Eller skriv til e-post. Vi vil gi råd om alle spørsmål og vi velger den optimale tariffen for din bedrift.

Syntaks

Hvis-modifisert-siden: , ::GMT

direktiver

En av "man", "tir", "on", "tors", "fre", "lør" eller "søn" (skiller mellom store og små bokstaver). 2-sifret dagnummer, f.eks. "04" eller "23". En av "Jan", "Feb", "Mar", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Des" ( skiller mellom store og små bokstaver). 4-sifret årsnummer, f.eks. "1990" eller "2016". 2-sifret timenummer, f.eks. "09" eller "23". 2-sifret minuttnummer, f.eks. "04" eller "59". 2-sifret andrenummer, f.eks. "04" eller "59". GMT

Greenwich Mean Time. HTTP-datoer er alltid uttrykt i GMT, aldri i lokal tid.

Eksempler

Hvis-modifisert-siden: ons, 21. oktober 2015 07:28:00 GMT

Spesifikasjoner

Spesifikasjon Tittel
RFC 7232, avsnitt 3.3: Hvis-modifisert-siden Hypertext Transfer Protocol (HTTP/1.1): Betingede forespørsler

Nettleserkompatibilitet

Kompatibilitetstabellen på denne siden er generert fra strukturerte data. Hvis du ønsker å bidra til dataene, vennligst sjekk ut https://github.com/mdn/browser-compat-data og send oss ​​en pull-forespørsel.

Oppdater kompatibilitetsdata på GitHub

SkrivebordMobil
ChromeKantFirefoxInternet ExplorerOperaSafariAndroid-nettvisningChrome for AndroidFirefox for AndroidOpera for AndroidSafari på iOSSamsung Internett
Hvis-modifisert-sidenChrome Full støtte JaEdge Full støtte 12Firefox Full støtte JaIE Full støtte JaOpera Full støtte JaSafari Full støtte JaWebView Android Full støtte JaChrome Android Full støtte JaFirefox Android Full støtte JaOpera Android Full støtte JaSafari iOS Full støtte JaSamsung Internett Android Full støtte Ja

Last-Modified og If-Modified-Since Headers for WordPress

Få mennesker legger merke til HTTP-hoder Sist endret Og Hvis-modifisert-siden når du optimaliserer nettstedet ditt, men forgjeves! Det er viktig at siden, hvis innhold ikke har endret seg siden siste besøk av søkeroboten, returnerer en 304-kode, som faktisk indikerer at denne siden ikke er supplert med noe - du har ikke redigert eller supplert teksten , ingen kommentarer er lagt til dette innlegget osv. P.

Hvis denne http-overskriften mangler, vil nettstedet i Yandex, når du sorterer resultater etter dato, ikke være synlig for de fleste brukere.

Derfor er det viktig at du ikke bare setter den opp riktig, men også oppdaterer datoen til gjeldende hver gang du redigerer en post. Dette må gjøres manuelt.

Med kommentarer er det enklere: når en besøkende legger til en kommentar, deretter i variabelen $last_modified_time tidspunktet kommentaren ble lagt til legges inn automatisk - dette vil være datoen siden sist ble endret.

Hvorfor trenger vi overskriftene Last-Modified og If-Modified-Since?

1. Når serveren sender slik kode, starter ikke kjøringen av alle PHP-skript på siden en gang. Siden lastes fra søkebufferen, og dette reduserer, som du forstår, belastningen på serveren betydelig, til stor glede for hosteren din, og øker hastigheten på sidelasting for den besøkende, noe som også er gode nyheter.

Hvordan skjer dette?

Når de gjennomsøker Internett, lagrer Google- og Yandex-edderkopper en kopi av hvert nettsted i databasen deres. Denne kopien fungerer som en slags prøve for sammenligning: er alt fortsatt det samme eller har det skjedd endringer. Og hvis overskriftene Last-Modified og If-Modified-Since ikke er konfigurert eller konfigurert feil, blir nye sider på nettstedet indeksert, og hovedsiden i søkemotorens hurtigbuffer blir ikke oppdatert på lenge, akkurat som kommentaren feeden er ikke oppdatert.

Men for ofte oppdaterte sider (nyhetsstrømmer som oppdateres mange ganger om dagen, aktivt kommenterte blogger osv.) har det én ulempe: informasjonen i hurtigbufferen blir for raskt utdatert og en person, selv som laster inn siden på nytt, ser ikke de siste nyhetene , ser ikke nye kommentarer. Men det er ikke så ille. Problemet er at roboten ikke ser dette heller, med mindre den er slått på riktig tittel Sist endret.

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

Hvis nettstedet ditt oppdateres ofte (for eksempel blir innleggene dine ofte kommentert), kan du deaktivere hurtigbufring med følgende sett med overskrifter:

header("Utløper: ".gmdate("D, d M Y H:i:s", tid() + 7200)." GMT");

Dette betyr at gyldigheten av den lagrede kopien må dobbeltsjekkes ved hver forespørsel.

Hvordan fungerer caching i nettlesere?

Hvis den ikke deaktiveres ved å kalle no_cache-funksjonen, så lagres siden i Firefox og IE i hurtigbufferen, og for alle påfølgende forespørsler er det denne siden som returneres.

For å oppdatere siden og få den nyeste versjonen, må du trykke på tastekombinasjonen Ctrl+F5, fungerer ikke den vanlige "Oppdater"-knappen (F5). Og jeg må si, dokumenter i IE-cachen kan lagres i veldig, veldig lang tid.

I Opera tømmes cache-siden ved å trykke på "Refresh"-knappen eller F5-tasten. Kombinasjonen CRTL+F5 i Opera - laster inn alle åpne faner på nytt. Som du forstår, hvis du åpner dem mye, kan du få skjegg mens du venter.

Hvis du deaktiverer sidebufring med no_cache-funksjonen, bruker Opera og Firefox, når du får tilgang til en slik side, mekanismen med If-Modified-Since-overskriften. Dermed oppstår caching, men nettleseren spør serveren om siden faktisk har endret seg eller ikke - dette er den riktige måten å stille spørsmålet på.

Derfor må du aktivere behandling av denne parameteren også. Jeg vil ikke beskrive hva denne funksjonen betyr, jeg vil bare gi kode som sender overskrifter riktig og ikke forårsaker konflikter på de fleste vertssider jeg har jobbet med. Dette designet fungerer på sweb.ru, eomy.net, timeweb.ru, fastvps.ru, startlogic.com

header("Utløper: ".gmdate("D, d M Y H:i:s", tid() + 7200)." GMT");
header("Cache-Control: no-cache, must-revalidate");
$mt = filemtime($filnavn);
$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)
(header("HTTP/1.1 304 Ikke endret");
dø;
}
header("Sist endret: ".$mt_str);
ekko $tekst;
header("Vari: Accept-Encoding");
header("Accept-Encoding:gzip,deflate,sdch");
?>

Så alt du trenger å gjøre er å kopiere denne koden og legge den til i filen header.php Temaet ditt OVENFOR . De. denne koden er helt øverst i filen FØR resten av koden


Merk følgende! Før du legger til noe, lagre denne filen på datamaskinen din slik at du kan gjenopprette den opprinnelige versjonen hvis din ikke tillater en slik overskriftskonfigurasjon.

Vi sjekker resultatet ved å bruke sjekktjenestene Last-Modified og If-Modified-Since http://last-modified.com/ru/if-modified-since.html


  • Hvis resultatet er positivt, tørker vi svetten fra pannen og drikker te.
  • Hvis resultatet er negativt, kan samme konstruksjon legges til filen index.php i roten til WordPress (jeg fant dette på hostingen timeweb.ru). På samme måte over alt annet i den. Bare ikke glem dette når du oppdaterer - indeksfilen vil bli overskrevet i sin standardform.

Voila! Ved å stille inn overskriftene Last-Modified og If-Modified-Since riktig, fikk vi en haug med bonuser:

  • Vi økte sidelastingshastigheten, noe som er viktig for Google-roboten og hyggelig for folk.
  • Vi reduserte belastningen på serveren, noe som gledet hosten.
  • Datoen vil vises i Yandex-søkeresultater siste oppdatering sider, som i noen tilfeller er svært viktig for mennesker, og derfor vil dette indirekte ha en positiv effekt på atferdsfaktorer.
  • Sidene på nettstedet vårt vil være involvert i sortering av søkemotorer etter dato - ja, ja, det er dette avanserte brukere bruker.
  • Og som en konsekvens av alt det ovennevnte, vil indekseringen av nettstedet vårt av søkemotorer akselerere kraftig.



Topp