Schakel paginacaching uit. Voorkom paginacaching met PHP. Schakel paginacaching uit, alleen browser

Soms kan het nodig zijn om te voorkomen dat de browser een pagina in het cachegeheugen opslaat, omdat de informatie erop elke keer wordt bijgewerkt. Dit kan het genereren van gegevens zijn volgens geselecteerde filters of andere inhoud die elke keer op een nieuwe manier wordt gemaakt. Kortom, er zijn momenten waarop het nodig is om te voorkomen dat een verraderlijk programma een pagina in de cache opslaat. Vandaag zullen we leren hoe we dit kunnen implementeren op verschillende manieren, Met met behulp van PHP of HTML of .htaccess.

Verbiedt paginacaching in HTML

Dit kan gedaan worden met behulp van metatags. Nu gaan we het uitzoeken verschillende opties cacheverbod.

Verbod op caching door browser en proxyserver

Schakel paginacaching uit, alleen browser

Caching instellen op bepaalde tijd, voor browser

Met behulp van de onderstaande code kunnen we de browser vertellen hoe lang het document in de cache moet worden bewaard. Hierna wordt de cache bijgewerkt.

Caching instellen voor een specifieke tijd voor een proxyserver

Praktisch hetzelfde als in de vorige code, alleen de indicatie is specifiek voor de proxyserver.

Voorkom paginacaching met PHP

Praktisch gezien is alles hetzelfde als in het geval van HTML, alleen zullen we informatie weergeven via header-headers. Zo implementeert u een absolute cacheweigering:

U kunt caching ook voor een bepaalde tijd toestaan. Laten we caching bijvoorbeeld slechts één uur toestaan.

Voorkom paginacaching met .htaccess

Om het idee eenvoudiger te implementeren, kan alles op configuratieniveau worden gedaan Apache-server. Voordat het zover is, moeten we dat zeker weten benodigde modules zijn in werkende staat. Open het Apache-configuratiebestand en zie de volgende afbeelding:

LoadModule vervalt_module modules/mod_expires.so LoadModule headers_module modules/mod_headers.so ... AddModule mod_expires.c AddModule mod_headers.c

In het .htaccess-bestand verbieden we feitelijk het cachen van de uitvoergegevens. Zoals wij weten,. htaccess-bestand is van toepassing op de map waarin deze zich bevindt en op alle submappen.

# Header Cache-Control Header toevoegen Cache-Control "no-store, no-cache, must-revalidate" # Header Expires ExpiresActive On ExpiresDefault "nu"

Het is belangrijk om dat op te merken volledig verbod caching verhoogt de belasting van de server. Speel hier daarom voorzichtig mee! Beter nog, stel een specifieke tijd in waarvoor u documenten in de cache kunt opslaan. Laten we caching bijvoorbeeld instellen op 1 uur:

# Header Cache-Control Header toevoegen Cache-Control "public" # Header Expires ExpiresActive On ExpiresDefault "toegang plus 1 uur"

Conclusie Een beetje over caching

Webmasters komen vaak met caching in aanraking: browsers en proxyservers proberen het web voor de gebruiker te versnellen, proberen zoveel mogelijk te behouden groot aantal documenten in de cache. Als u een sitepagina in een browser opent, vervolgens een andere, en vervolgens terugkeert naar de eerste, is de kans groot dat de browser deze van uw schijf (of zelfs van uw computer) haalt. RAM), waar hij de pagina bij zijn eerste bezoek opsloeg. Het is duidelijk dat deze handeling doorgaans veel sneller is dan het ophalen van hetzelfde document uit het netwerk. Om een ​​pagina weer te geven heeft u immers niet alleen de HTML-code nodig, maar ook alle bijbehorende documenten van het netwerk: CSS-bestanden, afbeeldingen, scripts geformatteerd als aparte bestanden enz. Als u in de cachemappen op uw schijf kijkt (voor IE bevindt deze map zich meestal hier: "C:\Documents and Settings\ gebruikersnaam\Lokale instellingen\Tijdelijke internetbestanden", voor Firefox: "C:\Documenten en instellingen\ gebruikersnaam\Lokale instellingen\Applicatiegegevens\Mozilla\Firefox\Profiles\ _willekeurige_string_. default\Cache"), dan zult u zien hoeveel bestanden er door uw browser zijn opgeslagen.

Natuurlijk versnelt de cache het werk enorm, maar aan de andere kant kan de cache ook een negatieve rol spelen. Als een pagina, bijvoorbeeld een chat, bijvoorbeeld in de cache wordt opgeslagen, zien gebruikers eenvoudigweg geen nieuwe berichten. Webmasters beschouwen cache vaak als kwaadaardig en bestrijden dit kwaad zo goed als ze kunnen. In veel boeken (hoewel webmasters meestal geen boeken lezen, geven ze de voorkeur aan forums en andere). netwerkbronnen), in veel artikelen kun je een soortgelijke code vinden. Hier is een voorbeeld:

Caching-probleem in Microsoft-internet Ontdekkingsreiziger

Internet Explorer cachet GET-verzoeken. Auteurs die niet bekend zijn met HTTP-caching verwachten dat GET-verzoeken niet in de cache worden opgeslagen, of dat de cache kan worden omzeild, zoals in het geval van het klikken op een vernieuwingsknop. In sommige situaties is het vermijden van caching inderdaad een vergissing. Eén oplossing is gebruiken POST-methode, die nooit in de cache wordt opgeslagen; het is echter bedoeld voor andere operaties. Een andere oplossing is om de methode te gebruiken KRIJG verzoek, inclusief een unieke queryreeks bij elke aanroep, zoals weergegeven in het onderstaande voorbeeld.

req.open("GET", "xmlprovider.php?hash=" + Math.random());

of het instellen van de Expires-header op een datum in het verleden in uw script dat de XML-inhoud genereert. In PHP zou het er zo uitzien:

// IE caching header uitschakelen("Verloopt: ma, 26 juli 1997 05:00:00 GMT"); header("Laatst gewijzigd: ". gmdate("D, d M Y H:i:s") . "GMT"); header("Cache-Control: geen cache, moet opnieuw valideren"); header("Pragma: geen cache"); ...

PHP-code bekend? Ik weet zeker dat je het hebt geschreven (meestal met behulp van de methode Kopiëren-Plakken) in zijn werk. Maar! Er is hier een heel belangrijke “MAAR”: zonder op enigerlei wijze het belang en de autoriteit van Wikipedia te verminderen, zullen we alleen het ongelukkige feit opmerken dat deze code FOUT is! Wil je het zeker weten? Gemakkelijk!

Caching controleren

Laten we Apache dus starten met standaardinstellingen. Hier en verder gebruiken we Apache en PHP. Maar dit betekent geenszins dat het beschreven probleem en de oplossingen ervoor niet beschikbaar zijn op het platform van andere servers, bijvoorbeeld Microsoft IIS. Dus laten we Apache starten. Maak een lege test-cache-map in de serverroot en plaats daar het test-1.php-bestand met de volgende inhoud:

Het is gemakkelijk te zien dat we in het bovenstaande voorbeeld we proberen het schakel caching uit volgens het Wikipedia-recept en geef eenvoudig de huidige tijd weer.

Probeer nu uw map in de browser te bekijken. Om dit te doen, opent u uw browser en typt u in de adresbalk

Geweldig! Klik nu op uw test-1.php-bestand en noteer de tijd (ik heb bijvoorbeeld het browservenster naast de Windows-klok geplaatst):

Geweldig! Druk nu op de knoppen “Terug” en vervolgens op “Vooruit” in de browser:

Oeps! De tijd verandert niet!!! Wat betekent dit? Ja, alleen dat de browser de pagina uit de cache haalt!!! Hoe zit het met onze encyclopedisch code? Ja, het werkt niet!

Laten we teruggaan naar de oorspronkelijke bronnen

Wat is het probleem? Het probleem is misbruik antwoordkoppen. De RFC2616-specificatie wijdt een heel hoofdstuk aan caching. Maar helaas lezen webmasters niet vaak de specificaties. Dus wat betekenen die headers die we zojuist hebben gepasseerd? Laten we ze zien. Dit is erg handig om te doen met de add-on Firefox Web Developer Toolbar: Informatie. WeergaveAntwoordKopteksten(voor IE heet een soortgelijk hulpmiddel DevToolbar):

Daarom hebben we de volgende headers doorgegeven:

Verloopt: ma, 26 juli 1997 05:00:00 GMT - deze header stelt het tijdstip van relevantie van de informatie in. We proberen een datum in het verleden door te geven, in de overtuiging dat dit de browser zal dwingen de pagina elke keer vanaf de server te laden. Het dwingt je niet, zoals wij uit ervaring duidelijk merken.

Laatst gewijzigd: zaterdag 26 januari 2008 17:03:02 GMT — Datum en tijd waarop de informatie op de pagina is gewijzigd. Deze header heeft GEEN invloed op de caching (lees in RFC2616!), behalve dat deze gebruikt kan worden voor een verzoek met validators. Bijvoorbeeld, zoekrobot kan gegevens als deze opvragen: GET /megapage.html HTTP/1.1 If-Mofidied-Since: zaterdag 26 januari 2008 17:03:02 GMT

Dat wil zeggen: " geef mij het document als het sinds de opgegeven datum is gewijzigd", en de server zou moeten reageren met een 200 ("Hier is het document, het is gewijzigd!" of een 304 "Er waren geen wijzigingen." Maar om dit te laten werken, MOET uw server de Last-Modified header verzenden, en stuur het niet alleen, maar stuur de JUISTE DATUM waarop het document is gewijzigd. Maar wijzelf, met onze eigen handen, en dom encyclopedisch de code werd volledig vernietigd laatste hoop hierop! Dat wil zeggen: we hebben niet alleen de cache niet verboden, maar we hebben ook de zoekmachines (of beter gezegd ONSZELF) ernstig verwend! Je hebt immers de HUIDIGE datum als datum doorgegeven laatste verandering, herinneren?

Cache-Control: geen cache, moet opnieuw valideren - nu dichter bij het onderwerp. Het is deze header die de caching regelt, maar niet op zichzelf, maar in combinatie met anderen. Nu hebben we eenvoudigweg het volgende commando doorgegeven: “Als de no-cache-richtlijn geen veldnaam specificeert, MOET een cache het antwoord NIET gebruiken om aan een volgend verzoek te voldoen zonder succesvolle hervalidatie bij de oorspronkelijke server). Kortom, in deze vorm is dit een opdracht niet voor de browser, maar voor de proxyserver.

Pragma: no-cache is een verouderd ontwerp. Dit is van oude versie HTTP/1.0-protocol. Bijna alle browsers en proxy's negeren het. We zien dus dat geen van onze regels PHP-code de cache daadwerkelijk heeft uitgeschakeld. Wat te doen? Dit is wat:

Schakel caching uit

Sla het bestand test-1.php opnieuw op met de nieuwe naam test-2.php en wijzig het als volgt:

Probeer nu opnieuw onze testmap te openen http://localhost/test-cache/, klik op de naam test-2.php en klik nu op de knoppen “Terug” en “Vooruit”. De tijd verandert elke keer! En dit betekent dat de browser de pagina niet uit de cache haalt bij het vooruit/achteruit gaan, maar deze opnieuw opvraagt ​​bij de server. Dat is eigenlijk wat we nodig hadden. Laten we eens kijken naar de antwoordheaders:

Hier is het! We passeren twee headers:

Cache -Control: no -store - de pagina bevat privégegevens, kan niet in de cache worden opgeslagen! (Het doel van de no-store-richtlijn is het onbedoeld vrijgeven of bewaren van gevoelige informatie (bijvoorbeeld op back-uptapes))

Verloopt: zaterdag 26 januari 2008 20:31:55 +0300 - de relevantie van de pagina vervalt onmiddellijk, dat wil zeggen: nu.

En het zijn deze headers die caching in de browser voorkomen. Maar het is nog juister om instructies voor proxyservers toe te voegen aan de Cache-Control-header (bestand test-3.php):

Praktisch verbod op caching

Zo hebben we geleerd de cache uit te schakelen. Betekent dit dat u de bovenstaande code op al uw pagina's moet opnemen? Helemaal niet! Als u caching in alle bestanden in een map moet uitschakelen (niet alleen uitvoerbare bestanden) php-scripts) kunnen we de Apache-server configureren om de headers te verzenden die we nodig hebben. Om dit te doen, opent u het configuratiebestand van de Apache-server en zorgt u ervoor dat u de opmerkingen verwijdert volgende regels(of verwijder de opmerkingen zelf):

LoadModule vervalt_module modules/mod_expires.so LoadModule headers_module modules/mod_headers.so ... AddModule mod_expires.c AddModule mod_headers.c

Geweldig! Maak nu gewoon een .htaccess-bestand in uw map en schrijf daarin het volgende:

# # Caching in deze map uitschakelen # Modules moeten zijn ingeschakeld # mod_headers.c en mod_expires.c # # Header Cache-Control Header append Cache-Control "no-store, no-cache, must-revalidate" # Header Expires ExpiresActive On ExpiresDefault " nu"

Alle! De benodigde headers worden automatisch en specifiek van schrijven naar verzonden PHP al niet nodig - de cache is al uitgeschakeld! U kunt dit eenvoudig verifiëren als u naar de headers kijkt die worden verzonden bij het opvragen van ELK bestand in deze map:

Toestemming voor cachen

Maar ondanks het feit dat het overweldigende aantal webmasters cache als een universeel kwaad beschouwt, en proberen verbied het (en, zoals we hebben gezien, tamelijk zonder succes), dit is niet zo! Door caching uit te schakelen, dwingt u de browser om uw pagina's elke keer opnieuw vanaf de server te laden. Als het communicatiekanaal van de gebruiker zwak is, kan dit leiden tot een merkbare vertraging in het gebruik van uw site. Om nog maar te zwijgen van het feit dat dit leidt tot een toename van de belasting op uw server! Als uw pagina of een deel ervan wordt gegenereerd door zoekopdrachten in de database, verhoogt u ook de belasting van de databaseserver, wat een extreem negatieve invloed kan hebben op de prestaties van uw server als geheel. Je weet waar ik het over heb, kijk bijvoorbeeld eens naar het werk www.odnoklassniki.ru! Sommige webmasters scheppen ook op door deze “statistieken” onderaan de pagina weer te geven: “ Pagina gegenereerd in 0,9 seconden, 9 voltooidSQLverzoeken" Dit toont niets anders aan dan absoluut domme webapplicatie-architectuur!

Laten we integendeel proberen de server te ontlasten en het werk van onze gebruiker te versnellen! En de cache in deze kwestie is er een van krachtige hulpmiddelen! Vertel me eens, hoe vaak verandert uw ‘Over het bedrijf’-pagina? Of wat er gebeurt als een gebruiker uw nieuws ziet (“ hoera! Wij zijn verhuisd naar nieuwe motor "") EEN UUR LATER? Dus waarom zou je het cachen van dergelijke pagina's verbieden?

Open het nu met een browser, noteer de tijd en probeer verschillende links naar dit bestand te volgen. De tijd verandert niet, ook niet als u de browser sluit, opent en nogmaals op de bestandsnaam klikt! Binnen een uur wordt dit bestand uit de cache gehaald. Dat wil zeggen, binnen een uur voor de gebruiker wordt uw script EENMAAL uitgevoerd, de rest van de tijd wordt de pagina geladen vanuit de lokale cache MET DE MAXIMALE SNELHEID MOGELIJK! En stel u eens voor hoeveel de belasting van uw server zal afnemen! En dat zijn slechts twee regels code!

Of je kunt het helemaal zonder PHP doen. Maak een .htaccess-bestand in de map en voer het volgende daarin in:

# # Caching toestaan ​​in deze map # Modules moeten zijn ingeschakeld # mod_headers.c en mod_expires.c # # Cache-Control Header toevoegen Cache-Control "public" # Expires Header ExpiresActive On ExpiresDefault "toegang plus 1 uur"

Het resultaat is, zoals ze zeggen, zichtbaar met het blote oog. Dit is vooral effectief voor siteafbeeldingen, voor pagina's met zelden gewijzigde inhoud of voor vaak bezochte pagina's, bijvoorbeeld de startpagina.

Gewoon een aanbeveling: debug eerst uw site volledig en schakel dan pas caching in! Anders loop je het risico grijs te worden terwijl je naar fouten zoekt en volledig gedesillusioneerd raakt door webtechnologieën :)
Veel succes en succes met het cachen!

Hoe caching uit te schakelen?

Antwoord van de meester:

Het cachen van documenten is niet altijd nuttig in termen van snel werk browser. Om het uit te schakelen, moet u de functies kennen die inherent zijn aan elke internetbrowser. Hoe caching in de populairste internetbrowsers uitschakelen?

Laten we het volgende doen, indien gebruikt Mozilla Firefox. IN adresbalk browser voer opera:config in. Er verschijnt een venster waarin u wordt gewaarschuwd uiterst voorzichtig te zijn. Klik op "Oké". Zoek “Filter” en typ daar browser.cache. Hierna blijven er niet meer dan tien regels over in de instellingen.

Om caching uit te schakelen, zoekt u naar browser.cache.disk.enable en browser.cache.memory.enable. Laten we ons concentreren op het waardeveld. Beide lijnen hebben WAAR. Laten we het veranderen in false. Start hierna de browser opnieuw op om alle wijzigingen door te voeren. 2. Laten we het volgende doen als Internet Explorer wordt gebruikt. Open in het menu “Extra” en klik vervolgens op het venster “Internetopties”. Het browsereigenschappenvenster wordt geopend. Ga naar het tabblad “Algemeen” en klik daar op “Opties”.

Selecteer vervolgens in de selector ‘Controleren op updates voor opgeslagen pagina’s’ de optie ‘Nooit’. Om caching uit te schakelen, plaatst u een nul naast het venster 'Gebruikte schijfruimte'. Klik daarna op “Ok” om de wijzigingen te accepteren.

Als u Opera gebruikt. Druk op de toetsen Ctrl+F12 en selecteer vervolgens “ Algemene instellingen" Laten we naar het tabblad ‘Geavanceerd’ gaan en vervolgens naar ‘Verhalen’. Het tabblad “Geheugencache”, evenals “ Schijfcache» stel de waarde in op “Disabled” om caching uit te schakelen. In de vensters “Documenten controleren” en “Afbeeldingen controleren” selecteert u “Nooit”. Vervolgens “OK”, de wijzigingen worden van kracht.

Indien gebruikt Google Chrome. Laten we klikken klik met de rechtermuisknop muis naar de snelkoppeling voor het starten van de browser. Na de verschijning contextmenu selecteer het venster "Eigenschappen". Ga daarna in het venster dat verschijnt naar het tabblad "Snelkoppeling". In het venster waar het bestandsadres wordt aangegeven, voegt u “-disk-cache-size=0-media-cache-size=0” toe. Laten we plaatsen deze opdracht achter aanhalingstekens het bestandsadres. Laten we de wijzigingen toepassen.

Moderne browsers gebruiken vrij vaak een lokale cache in hun werk. Wat betekent dit? Dit betekent dat de browser, nadat hij een HTML-document, afbeelding of andere bron van de server heeft ontvangen, deze in zijn lokale cache plaatst (met andere woorden, de ontvangen bron naar de server schrijft). harde schijf gebruikersmachine) en tijdens daaropvolgende verzoeken aan een dergelijke bron geen toegang krijgt tot de server, maar de bron ontvangt uit de lokale cache.

Dit browseralgoritme verhoogt de laadsnelheid van HTML-documenten dramatisch. Omdat als de bron al is geladen en zich als gevolg daarvan in de lokale cache bevindt, de toegangstijd niet wordt bepaald doorvoer communicatiekanaal (bijvoorbeeld modemverbinding) en de snelheid hard werken schijf.

Echter, samen met de voordelen deze methode brengt ook een aantal problemen met zich mee. Vooral de meeste beginnende webprogrammeurs worden bij het ontwikkelen van dynamische sites met hetzelfde probleem geconfronteerd. De essentie van dit probleem is dat in plaats van herhaaldelijk contact op te nemen met de server voor een pagina die een script op de server uitvoert dat bepaalde informatie wijzigt, de browser toegang krijgt tot de lokale cache. En als gevolg van bijvoorbeeld drie verzoeken zijn er niet drie wijzigingen in de informatie op de server, maar slechts één.

Om de browser te dwingen elke keer een pagina van de server op te vragen, moet u de browser de toegang verbieden deze hulpbron cachen. Hieronder staan ​​de meest gebruikelijke methoden om caching uit te schakelen of te omzeilen.

Een nieuwe URL genereren

Laten we aannemen dat de aangevraagde bron de volgende URL heeft: test.html?id=7. Zoals je kunt zien aan de url "en er wordt één parameter aan doorgegeven. Laten we bijvoorbeeld toevoegen met JavaScript-hulp, er is nog een parameter in de url, en we zullen er de waarde van maken willekeurig nummer. Als gevolg hiervan ziet de url er als volgt uit: test.html?id=7&rnd=0.6700820127538827. De willekeurige parameter wordt elke keer opnieuw gegenereerd. Hieronder vindt u een lijst die deze aanpak demonstreert:

Een nieuwe URL genereren document.write("");

test link

Elke keer dat het resultaat van een dergelijk verzoek in de cache wordt opgeslagen, maar omdat de caching over de gehele URL wordt uitgevoerd, wordt er elke keer een nieuwe URL verkregen en wordt de browser gedwongen om een ​​bron op te vragen bij de server, aangezien de URL's van de twee verzoeken komen niet exact overeen.

Kopvelden U kunt caching ook vanaf de serverzijde beheren. Om dit te bereiken, wordt de naar de browser verzonden bron vergezeld van headervelden. Gedetailleerde beschrijving headervelden zijn te vinden in de Rfc 2068-standaard, die beschrijft 1.1.

HTTP-protocol

Verloopt kopveld

De waarde van deze header is de datum waarna de inhoud van de bron verouderd raakt. Als een gebruiker na deze datum toegang krijgt tot een bron, moet de browser de bron opvragen bij de server in plaats van bij de lokale cache.< содержит дату, прошедшую, по отношению к текущей, то при следующем обращении к ресурсу браузер будет вынужден снова обратиться к серверу. Это произойдет вследствие того, что либо документ не будет занесен в кэш - как уже устаревший, либо при обращении к кэшу браузер определит, что документ уже устарел. Следующий листинг на PHP демонстрирует использование заголовка Expires:

Als het veld >Verloopt

Laatst gewijzigd kopveld De waarde van deze header is datum laatste update bron. Meerderheid gebruik volgende algoritme als de bron zich al in de lokale cache bevindt:

  • vraagt ​​van de server de datum van de laatste bronupdate aan
  • vergelijkt de ontvangstdatum en de brondatum in de lokale cache
  • als de bron zich op de server bevindt nieuwer dan de bron in de cache - er wordt een bron opgevraagd bij de server

Als een bron op de server dit veld bevat huidige datum, dan zal de browser de bron elke keer bij de server opvragen, en niet bij de lokale cache. De volgende lijst demonstreert het gebruik van het kopveld Laatst gewijzigd:

Header("Laatst gewijzigd: " . gmdate("D, d M Y H:i:s") . "GMT");

Cache-Control en Pragma-headervelden

En tot slot de headervelden, die rechtstreeks verantwoordelijk zijn voor het cachen van bronnen. Het veld is gedefinieerd in de RFC 1945-standaard die het HTTP 1.0-protocol beschrijft. Dit veld wordt als verouderd beschouwd, maar in sommige gevallen is het nodig om het te gebruiken. In het bijzonder verwerken sommige proxyservers verzoeken voor voortdurend veranderende bronnen niet correct als dit headerveld niet met de bron wordt meegestuurd.

Het tweede veld is gedefinieerd in de RFC 2068-standaard, die het HTTP 1.1-protocol beschrijft. Met dit headerveld kunt u caching uitschakelen en elke keer een bron van de server opvragen. De volgende lijst demonstreert het gebruik van de headervelden Cache-Control en Pragma om caching uit te schakelen:

Header("Cache-Control: geen cache, moet opnieuw valideren"); header("Pragma: geen cache");

Webmasters komen vaak met caching in aanraking: browsers en proxyservers proberen het internet voor de gebruiker te versnellen en proberen zoveel mogelijk documenten in hun cache op te slaan.

Soms kan het nodig zijn om te voorkomen dat de browser een pagina in het cachegeheugen opslaat, omdat de informatie erop elke keer wordt bijgewerkt. Dit kan het genereren van gegevens zijn volgens geselecteerde filters of andere inhoud die elke keer op een nieuwe manier wordt gemaakt. Kortom, er zijn momenten waarop het nodig is om te voorkomen dat een verraderlijk programma een pagina in de cache opslaat. Vandaag zullen we leren hoe we dit op verschillende manieren kunnen implementeren, met behulp van PHP of HTML of .htaccess

Verbiedt paginacaching in HTML

Dit kan gedaan worden met behulp van metatags.
Verbod op caching door browser en proxyserver

Schakel paginacaching uit, alleen browser

Caching instellen voor een specifieke tijd voor de browser

Met behulp van de onderstaande code kunnen we de browser vertellen hoe lang het document in de cache moet worden bewaard. Hierna wordt de cache bijgewerkt.

Caching instellen voor een specifieke tijd voor een proxyserver
Praktisch hetzelfde als in de vorige code, alleen de indicatie is specifiek voor de proxyserver.

Voorkom paginacaching met PHP

Praktisch gezien is alles hetzelfde als in het geval van HTML, alleen zullen we informatie weergeven via header-headers. Zo implementeert u een absolute cacheweigering:

U kunt caching ook voor een bepaalde tijd toestaan. Laten we caching bijvoorbeeld slechts één uur toestaan.

Voorkom paginacaching met .htaccess

Om het idee eenvoudiger te implementeren te maken, kan alles op het configuratieniveau van de Apache-server worden gedaan. Voordat we dit doen, moeten we ervoor zorgen dat de benodigde modules werken. Open het Apache-configuratiebestand en zie de volgende afbeelding:

LoadModule vervalt_module modules/mod_expires.so
LoadModule headers_module modules/mod_headers.so
...
AddModule mod_expires.c
AddModule mod_headers.c

In het .htaccess-bestand verbieden we feitelijk het cachen van de uitvoergegevens. Zoals we weten, wordt het .htaccess-bestand gedistribueerd naar de map waarin het zich bevindt en naar alle submappen.

# Header Cache-Control Header toevoegen Cache-Control "no-store, no-cache, must-revalidate" # Header Expires ExpiresActive On ExpiresDefault "nu"

Het is belangrijk op te merken dat het volledig verbieden van caching de belasting van de server verhoogt. Speel hier daarom voorzichtig mee! Beter nog, stel een specifieke tijd in waarvoor u documenten in de cache kunt opslaan. Laten we caching bijvoorbeeld instellen op 1 uur:

# Header Cache-Control Header toevoegen Cache-Control "public" # Header Expires ExpiresActive On ExpiresDefault "toegang plus 1 uur"