wake-up-neo.com

Wie setze ich HTTP-Header (zur Cache-Kontrolle)?

Wie aktiviere ich das Browser-Caching für meine Site? Platziere ich die Cache-Kontrolle: public irgendwo in meinem Header so?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
Cache-Control:public;
>

Ich verwende die neueste Version von PHP und entwickle auf der neuesten Version von XAMPP.

229
andrew

Um die Cache-Steuerung in HTML zu verwenden, verwenden Sie das Meta-Tag , z.

<meta http-equiv="Cache-control" content="public">

Der Wert im Inhaltsfeld ist als einer der vier folgenden Werte definiert.

Einige Informationen zum Header Cache-Control lauten wie folgt

HTTP 1.1. Zulässige Werte = PUBLIC | PRIVAT | NO-CACHE | NO-STORE.

Öffentlich - Kann in öffentlichen gemeinsam genutzten Caches zwischengespeichert werden.
Privat - darf nur im privaten Cache zwischengespeichert werden.
No-Cache - darf nicht zwischengespeichert werden.
No-Store - kann zwischengespeichert, aber nicht archiviert werden.

Die Direktive CACHE-CONTROL: NO-CACHE gibt an, dass zwischengespeicherte Informationen nicht verwendet und stattdessen Anforderungen an den Origin-Server weitergeleitet werden sollen. Diese Direktive hat die gleiche Semantik wie die PRAGMA: NO-CACHE.

Clients SOLLTEN sowohl PRAGMA: NO-CACHE als auch CACHE-CONTROL: NO-CACHE enthalten, wenn eine No-Cache-Anforderung an einen nicht bekannten Server gesendet wird HTTP/1.1-konform sein. Siehe auch EXPIRES.

Hinweis: Es ist möglicherweise besser, Cache-Befehle in HTTP als in META-Anweisungen anzugeben, bei denen sie mehr als den Browser beeinflussen können, aber Proxys und andere Intermediäre, die möglicherweise Informationen zwischenspeichern.

189
Codemwnci

Sie können setzen Sie die Header in PHP mit:

<?php
  //set headers to NOT cache a page
  header("Cache-Control: no-cache, must-revalidate"); //HTTP 1.1
  header("Pragma: no-cache"); //HTTP 1.0
  header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past

  //or, if you DO want a file to cache, use:
  header("Cache-Control: max-age=2592000"); //30days (60sec * 60min * 24hours * 30days)

?>

Beachten Sie, dass die genauen verwendeten Header von Ihren Anforderungen abhängen (und wenn Sie HTTP 1. und/oder HTTP 1.1 unterstützen müssen).

127
scunliffe

Wie ich geschrieben habe (in http://www.williamferreira.net/blog/2011/10/04/controle-de-cache-Apache/ ) ist es am besten, die Datei .htacces zu verwenden. Beachten Sie jedoch, wann Sie den Inhalt im Cache belassen.

Verwenden:

<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$">
Header set Cache-Control "max-age=604800, public"
</FilesMatch>

Wobei: 604800 = 7 Tage

PS: Hiermit können Sie einen beliebigen Header zurücksetzen

45
William

Auf der Seite unter http://www.askapache.com/htaccess/Apache-speed-cache-control.html wird folgende Verwendung empfohlen:

Cache-Control-Header hinzufügen

Dies geht in Ihre Root-.htaccess-Datei, aber wenn Sie Zugriff auf httpd.conf haben, ist das besser.

Dieser Code verwendet die Direktive FilesMatch und die Direktive Header, um bestimmten Dateien Cache-Control-Header hinzuzufügen.

# 480 weeks
<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$">
Header set Cache-Control "max-age=290304000, public"
</FilesMatch>
29
angry kiwi

Dies ist der beste .htaccess, den ich in meiner aktuellen Website verwendet habe:

<ifModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file .(html?|txt|css|js|php|pl)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image/.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</ifModule>

##Tweaks##
Header set X-Frame-Options SAMEORIGIN

## EXPIRES CACHING ##
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType text/css "access 1 month"
ExpiresByType text/html "access 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType text/x-javascript "access 1 month"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType image/x-icon "access 1 year"
ExpiresDefault "access 1 month"
</IfModule>
## EXPIRES CACHING ##

<IfModule mod_headers.c>
    Header set Connection keep-alive
    <filesmatch "\.(ico|flv|gif|swf|eot|woff|otf|ttf|svg)$">
        Header set Cache-Control "max-age=2592000, public"
    </filesmatch>
    <filesmatch "\.(jpg|jpeg|png)$">
        Header set Cache-Control "max-age=1209600, public"
    </filesmatch>
    # css and js should use private for proxy caching https://developers.google.com/speed/docs/best-practices/caching#LeverageProxyCaching
    <filesmatch "\.(css)$">
        Header set Cache-Control "max-age=31536000, private"
    </filesmatch>
    <filesmatch "\.(js)$">
        Header set Cache-Control "max-age=1209600, private"
    </filesmatch>
    <filesMatch "\.(x?html?|php)$">
        Header set Cache-Control "max-age=600, private, must-revalidate"
      </filesMatch>
</IfModule>
17
Erich García

Für Apache-Server sollten Sie mod_expires aktivieren, um die Header Expires und Cache-Control festzulegen.

Alternativ können Sie die Direktive Header verwenden, um Cache-Control selbst hinzuzufügen:

Header set Cache-Control "max-age=290304000, public"
13

Mit dem Meta-Cache-Steuertag können Web-Publisher definieren, wie Seiten von Caches behandelt werden sollen. Sie enthalten Anweisungen, mit denen angegeben wird, was zwischengespeichert werden soll, was von den Caches gespeichert werden darf, Änderungen des Ablaufmechanismus sowie Revalidierungs- und Reload-Steuerelemente.

Die zulässigen Werte sind:

Öffentlich - Kann in öffentlichen gemeinsam genutzten Caches zwischengespeichert werden
Privat - darf nur im privaten Cache zwischengespeichert werden
no-Cache - darf nicht zwischengespeichert werden
no-Store - kann zwischengespeichert, aber nicht archiviert werden

Bitte beachten Sie die Groß- und Kleinschreibung. Fügen Sie das folgende Meta-Tag in die Quelle Ihrer Webseite ein. Der Unterschied in der Schreibweise am Ende des Tags ist, dass Sie entweder "/> = xml" oder "> = html" verwenden.

    <meta http-equiv="Cache-control" content="public">
    <meta http-equiv="Cache-control" content="private">
    <meta http-equiv="Cache-control" content="no-cache">
    <meta http-equiv="Cache-control" content="no-store">

Source-> MetaTags

5
Karthik N G

OWASP empfiehlt Folgendes:

Stellen Sie nach Möglichkeit sicher, dass der HTTP-Header für die Cache-Steuerung auf no-cache, no-store, must-revalidate und private festgelegt ist. und dass der Pragma-HTTP-Header mit No-Cache gesetzt ist.

<IfModule mod_headers.c>
    Header set Cache-Control "private, no-cache, no-store, proxy-revalidate, no-transform"
    Header set Pragma "no-cache"
</IfModule>
5
Won Jun Bae