Làm cách nào để đặt tiêu đề hết hạn cho CSS, JS và Hình ảnh?


38

Gần đây tôi đã phân tích trang web của mình với addon trangpeed trên fireorms. Nó đề nghị tôi thiết lập hết hạn trên các tệp CSS, JS và hình ảnh.

Tôi tự hỏi làm thế nào để tôi làm điều này?

Câu trả lời:


37

Cập nhật cấu hình Apache của bạn để bao gồm các chỉ thị bên dưới như một phần của cấu hình cốt lõi của bạn :

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

Tôi nhận được 500 lỗi Máy chủ nội bộ khi đặt nó vào tệp .htaccess của mình
KoolKabin

Thiết lập Apache của bạn có thể không hỗ trợ tất cả các tùy chọn được liệt kê ở trên. Tôi sẽ cập nhật câu trả lời này sớm để giúp giải quyết vấn đề này.
John Conde

Drupal của tôi chứa các tham chiếu javascript / css như: www.example.com/misc/jquery.js?v=1.4.4 hoặc www.example.com/sites/all/modules/nice_menus/css/nice_menus.css?mtu293, nó dường như không làm việc cho các tập tin như vậy. Được cập nhật như ngày hôm nay?
AgA

2
@JohnConde Tại sao cả hai hết hạn và tiêu đề? Ngoài ra, khi cập nhật một hình ảnh hoặc css chẳng hạn, tập tin có cần phải đổi tên không? Hoặc đối với tệp css, phiên bản hoạt động: test.css? 123?
riseagainst

14

Bạn có thể đặt cái này trong htaccess của bạn:

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

Nó sẽ nhắm mục tiêu các tệp có các phần mở rộng đó (ico, flv, jpg, v.v.) và đặt tiêu đề Hết hạn là thời gian truy cập (A) cộng thêm 30 ngày (2592000 giây). Bạn cũng có thể thêm cái này ở cấp máy chủ nếu bạn có quyền truy cập vào đó.


2

Nó phụ thuộc từ máy chủ và cách bạn phục vụ những thứ này. Tùy chọn 1) nếu bạn điều khiển máy chủ, hãy tạo apache để thêm các tiêu đề hết hạn trong phản hồi Tùy chọn 2) nếu bạn không điều khiển máy chủ web hoặc bạn lưu trữ hình ảnh / js / css / etc bạn có thể đặt các tiêu đề này từ tập lệnh phục vụ họ

Hãy nhớ rằng những gợi ý này được khuyến khích nhưng không phải là sự thật tuyệt đối. Chúng giúp bạn tiết kiệm băng thông hơn là tăng tốc trang web của bạn. Vì vậy, nếu bạn có lưu lượng truy cập thấp đến trang web của mình, đừng quá lo lắng về điều này.


Tôi có tùy chọn 2. Làm cách nào để đặt các tiêu đề này từ tập lệnh. Script có nghĩa là php hay cái nào?
KoolKabin

Bạn có thể kiểm tra stackoverflow.com/questions/2185449/ khăn đây là một ví dụ về python nhưng nếu bạn quen thuộc với lập trình tôi nghĩ bạn sẽ có được ý tưởng. Trong php bạn sẽ phải sử dụng các tiêu đề (). Nhưng hãy nhớ rằng trong trường hợp này, tất cả các tệp "tĩnh" sẽ phải được cung cấp qua máng tập lệnh sẽ tăng dung lượng CPU của bạn. Bây giờ với tôi rằng có một lựa chọn thứ 3. Sử dụng CDN cho các tệp này.
Ilian Iliev

2

Thiết lập hết hạn trong Máy chủ web Lightspeed

Đăng nhập vào Bảng điều khiển dành cho quản trị viên sau đó> Máy chủ-> Chung-> Cài đặt hết hạn-> Hết hạn theo loại

Thêm những điều sau:

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 là giây hết hạn, phù hợp với nhu cầu của bạn vì 168 giờ là 7 ngày. Ngoài ra, Light Speed ​​Server không sử dụng htaccess mà bạn cần thêm dòng sau:

ExpiresActive On

Ngoài ra, nếu bạn không có quyền truy cập bảng điều khiển quản trị, hãy thử tệp .htaccess sau:

  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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.