Legen Sie den Cache-Steuerungsheader basierend auf dem Inhaltstyp in Apache fest

Legen Sie den Cache-Steuerungsheader basierend auf dem Inhaltstyp in Apache fest

Wir versuchen, den Cache-Control-Header: max-age=300, public für alle unsere öffentlichen Site-Seiten festzulegen. Um Filesmatch zu verwenden, haben meine Anwendungsseiten keine Erweiterungen. ExpiresByType ist verfügbar, hat aber seine eigenen Nachteile.

Ich suche nach einer Möglichkeit, den Cache-Control-Header für alle meine Anwendungsseiten mit dem Inhaltstyp Text/HTML festzulegen. Gibt es eine Möglichkeit, dies zu erreichen?

Antwort1

Content-TypeEine sicherere Methode (da Entwickler beim Festlegen von Dateierweiterungen Fehler machen können ) besteht darin, den Header basierend auf dem tatsächlichen festzulegen Content-Type:

<IfModule mod_headers.c>
  Header set Cache-Control "max-age=300, public" "expr=%{CONTENT_TYPE} =~ m#text/html#i"
</IfModule>

Antwort2

Der Browser muss keine .html-Erweiterung sehen, um zu wissen, dass es sich um ein Dokument vom MIME-Typ text/html handelt. Solange der Header dem Client-Browser mitteilt, dass das Dokument tatsächlich vom MIME-Typ text/html ist, reicht dies völlig aus:

ExpiresByType text/html "access plus 300 seconds"

Wenn Sie auf den Teil „hat seine eigenen Nachteile“ näher eingehen, können wir vielleicht auch dazu Stellung nehmen.

Antwort3

Da Sie mod_expires nicht verwenden können, können Sie stattdessen vielleicht mod_headers verwenden:http://httpd.apache.org/docs/2.2/mod/mod_headers.html.

Sie können filesMatch in Kombination mit Header verwenden

<filesMatch "\\.(html|htm)$">
Header set Cache-Control "max-age=300, public"
</filesMatch>

verwandte Informationen