Wie setze ich Ablaufheader für CSS, JS und Bilder?


38

Ich habe kürzlich meine Website mit Pagespeed Addon auf Firebug analysiert. Es schlug mir vor, das Ablaufdatum für CSS-, JS- und Bilddateien festzulegen.

Ich frage mich, wie mache ich das?

Antworten:


37

Aktualisieren Sie Ihre Apache-Konfiguration, um die folgenden Anweisungen in Ihre Kernkonfiguration aufzunehmen :

# 
# associate .js with "text/javascript" type (if not present in mime.conf)
# 
AddType text/javascript .js

# 
# configure mod_expires
# 
# URL: http://httpd.apache.org/docs/2.2/mod/mod_expires.html
# 
<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresDefault "access plus 1 seconds"
    ExpiresByType image/x-icon "access plus 2692000 seconds"
    ExpiresByType image/jpeg "access plus 2692000 seconds"
    ExpiresByType image/png "access plus 2692000 seconds"
    ExpiresByType image/gif "access plus 2692000 seconds"
    ExpiresByType application/x-shockwave-flash "access plus 2692000 seconds"
    ExpiresByType text/css "access plus 2692000 seconds"
    ExpiresByType text/javascript "access plus 2692000 seconds"
    ExpiresByType application/x-javascript "access plus 2692000 seconds"
    ExpiresByType text/html "access plus 600 seconds"
    ExpiresByType application/xhtml+xml "access plus 600 seconds"
</IfModule>

# 
# configure mod_headers
# 
# URL: http://httpd.apache.org/docs/2.2/mod/mod_headers.html
# 
<IfModule mod_headers.c>
    <FilesMatch "\\.(ico|jpe?g|png|gif|swf|css|js)$">
        Header set Cache-Control "max-age=2692000, public"
    </FilesMatch>
    <FilesMatch "\\.(x?html?|php)$">
        Header set Cache-Control "max-age=600, private, must-revalidate"
    </FilesMatch>
    Header unset ETag
    Header unset Last-Modified
</IfModule>

Ich erhalte den Fehler 500 Interner Server, wenn ich ihn in meine .htaccess-Datei
KoolKabin 11.11.10

Ihr Apache-Setup unterstützt möglicherweise nicht alle der oben aufgeführten Optionen. Ich werde diese Antwort in Kürze aktualisieren, um das Problem zu beheben.
John Conde

Mein Drupal enthält Javascript / CSS-Referenzen wie: www.example.com/misc/jquery.js?v=1.4.4 oder www.example.com/sites/all/modules/nice_menus/css/nice_menus.css?mtu293 scheint für solche Dateien nicht zu funktionieren. Wird es ab heute aktualisiert?
28.

2
@ JohnConde Warum beide abläuft und Header? Muss die Datei auch umbenannt werden, wenn beispielsweise ein Image oder ein CSS aktualisiert wird? Oder für eine CSS-Datei funktioniert die Versionierung: test.css? 123?
Riseagainst

14

Sie können dies in Ihren htaccess setzen:

<FilesMatch "(?i)^.*\.(ico|flv|jpg|jpeg|png|gif|js|css)$">
ExpiresActive On
ExpiresDefault A2592000
</FilesMatch>

Es zielt auf Dateien mit diesen Erweiterungen (ico, flv, jpg usw.) ab und setzt den Expires-Header auf Zugriffszeit (A) plus 30 Tage (2592000 Sekunden). Sie können dies auch auf Serverebene hinzufügen, wenn Sie Zugriff darauf haben.


2

Es hängt vom Host und der Art und Weise ab, wie Sie diese Dinge servieren. Option 1) Wenn Sie den Server steuern, lassen Sie den Apache Ablaufheader in der Antwort hinzufügen. Option 2) Wenn Sie den Webserver nicht steuern, oder wenn Sie die Datei images / js / css / etc servern, können Sie diese Header über das entsprechende Skript festlegen Server sie

Bedenken Sie, dass diese Hinweise empfehlenswert sind, aber nicht die absolute Wahrheit. Sie dienen eher dazu, Ihnen Bandbreite zu sparen, als Ihre Website zu beschleunigen. Also, wenn Sie einen geringen Datenverkehr auf Ihrer Website haben, machen Sie sich darüber keine allzu großen Sorgen.


Ich bin mit Option 2. Wie setze ich diese Header aus dem Skript. Script bedeutet PHP oder welches?
KoolKabin

Sie können stackoverflow.com/questions/2185449/… überprüfen . Dies ist ein Python-Beispiel, aber wenn Sie mit der Programmierung vertraut sind, werden Sie auf die Idee kommen. In PHP müssen Sie Header () verwenden. Beachten Sie jedoch, dass in diesem Fall alle "statischen" Dateien über das Skript bereitgestellt werden müssen, wodurch sich Ihre CPU-Quote erhöht. Jetzt ist mir klar, dass es eine dritte Option gibt. Verwenden Sie CDN für diese Dateien.
Ilian Iliev

2

Das Einrichten läuft in Lightspeed Web Server ab

Melden Sie sich bei Admin Console an und wählen Sie> Server-> Allgemein-> Läuft Einstellungen-> Läuft nach Typ ab

Fügen Sie Folgendes hinzu:

text/css=A604800, text/javascript=A604800, application/javascript=A604800, application/x-javascript=A604800, application/x-shockwave-flash=A604800, image/gif=A604800, image/jpg=A604800, image/jpeg=A604800, image/png=A604800, image/ico=A604800, image/icon=A604800

604800 sind die Sekunden des Ablaufs , die für Ihre Bedürfnisse geeignet sein sollten, da es sich bei 168 Stunden um 7 Tage handelt. Zusätzlich verwendet Light Speed ​​Server einen htaccess, den Sie benötigen, um die folgende Zeile hinzuzufügen:

ExpiresActive On

Alternativ können Sie die folgende .htaccess-Datei verwenden, wenn Sie keinen Zugriff auf die Administratorkonsole haben:

  ExpiresByType image/png A604800
  ExpiresByType image/gif A604800
  ExpiresByType image/jpg A604800
  ExpiresByType image/jpeg A604800
  ExpiresByType text/javascript A604800
  ExpiresByType application/x-javascript A604800
  ExpiresByType text/css A604800
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.