Hur att Konfigurera Cache-Control Rubriker i Apache

0
60

Varje webbläsare som använder sig av en inbyggd cache-minne för att lagra nedladdade objekt, som avsevärt kan påskynda återkommande besök på din webbplats genom att läsa från disk i stället för nätverket. Här är hur att konfigurera det i Apache.

Hur Fungerar Cachning Fungerar?

Första gången en användare ansluter till din webbplats, kommer de att ladda ner alla statiska resurser som krävs för att återge sidan, inklusive saker som din logotyp. När de navigerar du till en ny sida, det kommer att ladda din logotyp från minnet snarare än att be om det igen, för att snabba upp prestandan avsevärt och minskar belastningen på din webbserver i den processen.

Detta är en client-side-cache, men många webbplatser kommer också att använda ett Content Delivery Network, eller CDN. Ett CDN är ett nätverk av servrar som sitter framför din främsta webbservern, eller “ursprung” – server. Detta nätverk cachar dina sidor, att öka din maximala bandbredd, minskar tillgången fördröjningar och kraftigt minska stress placeras på ursprungsservern. Om du skulle vilja lära dig mer om Cdn, kan du läsa vår guide om dem här.

Cache-Control är en header som du kan konfigurera webbservern för att lägga till alla utgående förfrågningar, som kommer att tala om för webbläsaren och Cdn hur man cache ditt innehåll.

Vissa sidor bör aldrig cachas av gemensamt cachar som Cdn. Gör så ökar risken för att visa en användares personliga information till andra. Som en allmän regel, om den sidan kommer att vara exakt samma för alla användare, som din startsida, kan du cache. Om det visar konfidentiell användaren info, kommer du vill svartlista den från din cache. Statiska resurser, som CSS och bilder, oftast kan cachas för alla, ofta mycket längre.

Den tid som objekt spendera i cache-minne är också viktigt. Kallad Time-To-Live (TTL), den högsta ålder för cachelagrade resurser avgör hur långt objektet kommer att bo i cache före den som ogiltig och uppmanar användaren att begära ett nytt objekt. För statiska resurser att inte ändra så mycket, du kan ställa mycket höga TTL-värden, oftast runt två år. För saker som du kanske vill uppdatera, ska du vill ställa in lägre TTL-värden för att förhindra unken resurser från att vara i cache-minnet för länge.

Du kan alltid använda versionshanterade filnamn för att utlösa en cache ladda om. Om du släpper en ny version av en CSS-formatmall kan du namnge det stilar-1.0.1.css, och användarens webbläsare (och alla Cdn framför det) kommer att se det som en ny fil, som måste vara redownloaded. Dessutom, för vissa Cdn, kan du fråga manuell invalidations att spola befintliga cache utan att ändra alla filnamn.

Hur man Använder Cache-Control i Apache

Cache-Control har ett par alternativ:

  • allmänna – Kan cachas av vem som helst, inklusive webbläsare och Cdn. Använda denna för de flesta statiska objekt.
  • privat – Innehåller känsliga uppgifter som inte kan cachelagras av Cdn eller omvänd proxy. Användarens webbläsare kan cachas lokalt. Använda denna för de flesta autentiserade sidor.
  • no-cache – Trots namnet betyder det inte att inaktivera cachelagring. Det kan hända att det fortfarande cache svaret för prestanda, utan måste kontrollera med ursprung server för uppdateringar innan du använder det. Använd detta om du vill att användaren ska förlänga varje gång.
  • no-store – Inaktiverar cachelagring helt och hållet. Använd det här bara för mycket känsliga data som inte skickas två gånger.

Dessutom kan du lägga till no-förändra direktivet, som inaktiverar alla omvandlingar som kan göras för att resursen. Till exempel, vissa Cdn bilder komprimera för att minska bandbredden. Detta direktiv inaktiverar det beteendet.

I Apache, måste du ställa denna rubrik manuellt med Huvudet uppsättning direktiv, som så:

Header som Cache-Control “max-age=84600, offentliga”

Max-ålder värde ligger i sekunder, till exempel, max-age=300 för en fem-minuters TTL, och max-age=63072000 för två år.

Du kan sätta detta direktiv i roten på din konfiguration för att gälla hela webbplatsen, men en bättre metod är att tillämpa de inställningar beroende på vilken typ av fil. Till exempel, för att ställa in ett högt TTL för de flesta statiska media, kan du använda en FilesMatch block:

<FilesMatch “.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$”>
Header som Cache-Control “max-age=63072000, offentliga”
</FilesMatch>

Om du vill svartlista en viss väg från cachade av Cdn, kan du använda en Katalog block:

<Directory “/privata”>
Header som Cache-Control “max-age=300, privat”
</Directory>

Eller helt enkelt matcha en enda fil:

<Fil “protected.html”>
Header som Cache-Control “max-age=300, privat”
</File>

Block med mer specifika matcher kommer att ha företräde framför de allmänna regex matchar, men du vill ha för att kontrollera att allting är rätt inställd på att ta emot slutet. Du kan kontrollera detta från Chrome DevTools, under network (Nätverk) > – Rubriker.

Om du bara har tillgång till .htaccess konfiguration, kan du fortfarande använda katalogen matchande genom att skapa en ny .htaccess-fil i varje underkatalog.

Använd Surrogat-Kontrollen för att Ändra CDN Beteende Direkt

Surrogat-Kontroll header fungerar precis som Cache-Control, men detaljer som är specifika instruktioner för Cdn och omvänd proxy, snarare än användare. Detta sätt, du kan berätta för Cdn för att göra en sak, men att skicka olika riktningar till webbläsaren.

Du måste ställa in denna huvudet manuellt, på samma sätt som du ställer in Cache-Control:

Header som Surrogat-Kontroll “max-age=300, offentliga”

Du kommer definitivt vill testa med din CDN för att verifiera att det fungerar—Surrogat-Kontroll är ganska nytt, och är inte universell.