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?

KoolKabin
quelle

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>
John Conde
quelle
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.

Verärgerte Ziege
quelle
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.

Ilian Iliev
quelle
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
Simon Hayter
quelle