Jak ustawić nagłówki wygasania dla CSS, JS i obrazów?


38

Niedawno przeanalizowałem moją stronę przy pomocy dodatku pagepeed w Firebug. Zasugerowało mi ustawienie wygasania dla CSS, JS i plików obrazów.

Zastanawiam się, jak to zrobić?

Odpowiedzi:


37

Zaktualizuj konfigurację Apache, aby uwzględnić poniższe dyrektywy jako część podstawowej konfiguracji :

# 
# 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>

Dostaję błąd 500 serwera wewnętrznego, gdy umieszczam go w pliku .htaccess
— KoolKabin,

Twoja konfiguracja Apache może nie obsługiwać wszystkich powyższych opcji. Zaktualizuję tę odpowiedź wkrótce, aby pomóc rozwiązać ten problem.
— John Conde

Mój Drupal zawiera odwołania do javascript / css, takie jak: www.example.com/misc/jquery.js?v=1.4.4 lub www.example.com/sites/all/modules/nice_menus/css/nice_menus.css?mtu293 wydaje się nie działać dla takich plików. Czy jest aktualizowany na dzisiaj?
— AgA

2
@JohnConde Dlaczego wygasa i nagłówki? Ponadto, czy na przykład podczas aktualizacji obrazu lub css należy zmienić nazwę pliku? Lub w przypadku pliku css wersja działa: test.css? 123?
— powstanie przeciw

14

Możesz umieścić to w swoim htaccess:

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

Będzie celował w pliki z tymi rozszerzeniami (ico, flv, jpg itd.) I ustawi nagłówek Expires na czas dostępu (A) plus 30 dni (2592000 sekund). Możesz również dodać to na poziomie serwera, jeśli masz do tego dostęp.


2

Zależy to od hosta i sposobu serwera tych rzeczy. Opcja 1) jeśli kontrolujesz serwer, zrób apache, aby dodać nagłówki wygasające w odpowiedzi Opcja 2) jeśli nie kontrolujesz serwera WWW lub serwujesz obrazy / js / css / etc, możesz ustawić te nagłówki ze skryptu, który serweruj je

Pamiętaj, że te wskazówki są godne polecenia, ale nie są absolutną prawdą. Są one bardziej w celu zaoszczędzenia przepustowości niż przyspieszenia Twojej witryny. Więc jeśli masz mały ruch na swojej stronie, nie martw się zbytnio o to.


Jestem z opcją 2. Jak ustawić te nagłówki ze skryptu. Skrypt oznacza php lub który?
— KoolKabin

Możesz sprawdzić stackoverflow.com/questions/2185449/... jest to przykład python, ale jeśli znasz programowanie, myślę, że zrozumiesz. W php będziesz musiał użyć nagłówków (). Należy jednak pamiętać, że w tym przypadku wszystkie pliki „statyczne” będą musiały być obsługiwane przez skrypt, co zwiększy przydział procesora. Teraz przychodzi mi do głowy, że jest trzecia opcja. Użyj CDN dla tych plików.
— Ilian Iliev,

2

Konfiguracja wygasa w Lightspeed Web Server

Zaloguj się do konsoli administracyjnej, a następnie> Serwer-> Ogólne-> Wygasa Ustawienia-> Wygasa według typu

Dodaj następujące:

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 to sekundy wygaśnięcia, które powinny być dostosowane do twoich potrzeb, ponieważ jego 168 godzin, czyli 7 dni. Dodatkowo Light Speed ​​Server korzysta z htaccess, który musisz dodać następujący wiersz:

ExpiresActive On

Alternatywnie, jeśli nie masz dostępu do konsoli administratora, wypróbuj następujący plik .htaccess:

  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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.