Inaktivera CDN-cachning
Lär dig hur du inaktiverar cachelagring av HTTP-svar i AEM as a Cloud Service CDN. Cachelagringen av svar styrs av Cache-Control
, Surrogate-Control
eller Expires
cachehuvuden för HTTP-svar.
Dessa cacherubriker ställs vanligtvis in i AEM Dispatcher värdkonfigurationer med mod_headers
, men kan även ställas in i anpassad Java™-kod som körs i AEM Publish.
Standardbeteende för cachelagring
Cachelagring av HTTP-svar i AEM as a Cloud Service CDN styrs av följande HTTP-svarshuvuden från ursprungsläget Cache-Control
, Surrogate-Control
eller Expires
. Ursprungliga svar som innehåller private
, no-cache
eller no-store
i Cache-Control
cachelagras inte.
Granska standardbeteendet för cachelagring för AEM Publish och Author när ett AEM Project Archetype-baserat AEM-projekt distribueras.
Inaktivera cachelagring
Om du stänger av cachelagring kan det påverka prestandan negativt för din AEM as a Cloud Service-instans, så var försiktig när du stänger av standardcachelagring.
Det finns dock vissa scenarier där du kanske vill inaktivera cachelagring, som:
- Utveckla en ny funktion och vill omedelbart se ändringarna.
- Innehållet är säkert (endast avsett för autentiserade användare) eller dynamiskt (kundvagn, orderdetaljer) och ska inte cachas.
Om du vill inaktivera cachelagring kan du uppdatera cacherubrikerna på två sätt.
- Dispatcher-värdkonfiguration: Endast tillgänglig för AEM Publish.
- Anpassad Java™-kod: Tillgänglig för både AEM Publish och Author.
Låt oss titta närmare på de här alternativen.
Dispatcher-värdkonfiguration
Det här alternativet rekommenderas för att inaktivera cachelagring, men det är bara tillgängligt för AEM Publish. Om du vill uppdatera cacherubrikerna använder du direktivet mod_headers
module och <LocationMatch>
i Apache HTTP Server-serverns värdfil. Den allmänna syntaxen är följande:
<LocationMatch "$URL$ || $URL_REGEX$">
# Removes the response header of this name, if it exists. If there are multiple headers of the same name, all will be removed.
Header unset Cache-Control
Header unset Surrogate-Control
Header unset Expires
# Instructs the Browser and the CDN to not cache the response.
Header always set Cache-Control "private"
# Instructs only the CDN to not cache the response.
Header always set Surrogate-Control "private"
</LocationMatch>
Exempel
Följ de här stegen för att inaktivera CDN-cachelagring av CSS-innehållstyper i vissa felsökningssyften.
Observera att om du vill åsidosätta den befintliga CSS-cachen måste du ändra CSS-filen för att skapa en ny cachenyckel för CSS-filen.
-
Leta reda på önskad värdfil från katalogen
dispatcher/src/conf.d/available_vhosts
i ditt AEM-projekt. -
Uppdatera Vhost-filen (t.ex.
wknd.vhost
) enligt följande:code language-none <LocationMatch "^/etc.clientlibs/.*\.(css)$"> # Removes the response header of this name, if it exists. If there are multiple headers of the same name, all will be removed. Header unset Cache-Control Header unset Expires # Instructs the Browser and the CDN to not cache the response. Header always set Cache-Control "private" </LocationMatch>
Värdfilerna i katalogen
dispatcher/src/conf.d/enabled_vhosts
är symlinks till filerna i katalogendispatcher/src/conf.d/available_vhosts
, så se till att du skapar symboler om sådana inte finns. -
Distribuera värdändringarna till önskad AEM as a Cloud Service-miljö med Cloud Manager - konfigurationspipeline för webbnivå eller RDE-kommandon.
Anpassad Java™-kod
Det här alternativet är tillgängligt för både AEM Publish och Author. Om du vill uppdatera cacherubrikerna använder du objektet SlingHttpServletResponse
i anpassad Java™-kod (Sling-servlet, Sling-serverletsfilter). Den allmänna syntaxen är följande:
response.setHeader("Cache-Control", "private");