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-Type
Eine 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>