Як встановити заголовки закінчення терміну дії для CSS, JS та зображень?


38

Нещодавно я проаналізував свій веб-сайт за допомогою addpe-сторінки на firebug. Він запропонував мені встановити термін дії для CSS, JS та файлів зображень.

Мені цікаво, як мені це зробити?

Відповіді:


37

Оновіть конфігурацію Apache, щоб включити наведені нижче директиви як частину основної конфігурації :

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

Я отримую 500 внутрішніх помилок сервера, коли я розміщую його у своєму .htaccess файлі
KoolKabin

Ваша настройка Apache може не підтримувати всі перелічені вище варіанти. Незадовго я оновлю цю відповідь, щоб допомогти вирішити цю проблему.
Джон Конде

Мій Drupal містить посилання javascript / css, такі як: www.example.com/misc/jquery.js?v=1.4.4 або www.example.com/sites/all/modules/nice_menus/css/nice_menus.css?mtu293, це не працює для таких файлів. Чи оновлюється воно станом на сьогодні?
AgA

2
@JohnConde Чому термін дії та заголовки закінчується? Також, наприклад, при оновленні зображення чи css файл потрібно перейменовувати? Або для файлу css працює версія: test.css? 123?
riseagainst

14

Ви можете помістити це у свій htaccess:

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

Він націлить на файли з тими розширеннями (ico, flv, jpg тощо) та встановить заголовок Expires як час доступу (A) плюс 30 днів (2592000 секунд). Ви також можете додати це на рівні сервера, якщо у вас є доступ до цього.


2

Це залежить від хоста та способу сервера цих речей. Варіант 1) якщо ви керуєте сервером, зробіть apache для додавання заголовків закінчення терміну дії у відповідь Варіант 2), якщо ви не керуєте веб-сервером, або ви подаєте зображення / js / css / тощо, ви можете встановити ці заголовки із сценарію, який сервер їх

Майте на увазі, що ці підказки рекомендуються, але не є абсолютною правдою. Вони скоріше для економії пропускної здатності, ніж для прискорення веб-сайту. Тож якщо у вас мало трафіку на ваш сайт, не надто переживайте з цього приводу.


Я з варіантом 2. Як встановити ці заголовки зі сценарію. Сценарій означає php чи який?
KoolKabin

Ви можете перевірити stackoverflow.com/questions/2185449/… це приклад python, але якщо ви знайомі з програмуванням, я думаю, ви отримаєте ідею. У php вам доведеться використовувати заголовки (). Але майте на увазі, що в цьому випадку всі "статичні" файли повинні подаватися через сценарій, що збільшить вашу квоту на процесор. Тепер мені приходить, що є 3-й варіант. Використовуйте CDN для цих файлів.
Іліан Ілієв

2

Термін дії закінчується на веб-сервері Lightspeed

Потім увійдіть до консолі адміністратора, а потім> Сервер-> Загальні-> Настроїть термін дії-> Закінчується за типом

Додайте наступне:

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 - це секунди терміну дії, який повинен відповідати вашим потребам з моменту 168 годин, що становить 7 днів. Додатково сервер Light Speed ​​використовує htaccess, до якого потрібно додати наступний рядок:

ExpiresActive On

Крім того, якщо у вас немає доступу до консолі адміністратора, спробуйте наступний файл .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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.