2010-04-20 6 views
24

Tôi chạy thử nghiệm trên trang web của tôi sử dụng tốc độ trang của Google và nó khuyến cáo rằng tôi "bộ nhớ đệm trình duyệt Đòn bẩy" và cung cấp các tài nguyên sau:Set HTTP Caching hết hạn, Được giới thiệu bởi Google PageSpeed ​​

http://code.google.com/speed/page-speed/docs/caching.html#LeverageBrowserCaching

tài nguyên này không bao giờ giải thích cách thực sự thay đổi ngày hết hạn của tiêu đề http của tôi. Tôi có làm điều này thông qua .htaccess không? Tôi muốn đặt bộ nhớ cache càng lâu càng tốt (không vi phạm chính sách của Google tối đa một năm).

Bất kỳ lời khuyên nào về cài đặt được đề xuất (cho cộng đồng mạng xã hội theo định hướng php tùy chỉnh) sẽ được đánh giá cao.

Trả lời

28

Trong .htaccess của gốc của bạn:

<IfModule mod_expires.c> 
    ExpiresActive On 
    ExpiresDefault "access plus 1 seconds" 
    ExpiresByType image/x-icon "access plus 2592000 seconds" 
    ExpiresByType image/jpeg "access plus 2592000 seconds" 
    ExpiresByType image/png "access plus 2592000 seconds" 
    ExpiresByType image/gif "access plus 2592000 seconds" 
    ExpiresByType application/x-shockwave-flash "access plus 2592000 seconds" 
    ExpiresByType text/css "access plus 604800 seconds" 
    ExpiresByType text/javascript "access plus 216000 seconds" 
    ExpiresByType application/x-javascript "access plus 216000 seconds" 
    ExpiresByType text/html "access plus 600 seconds" 
    ExpiresByType application/xhtml+xml "access plus 600 seconds" 
</IfModule> 

Và làm theo bởi:

<IfModule mod_headers.c> 
<FilesMatch "\\.(ico|jpe?g|png|gif|swf)$"> 
Header set Cache-Control "max-age=2692000, public" 
</FilesMatch> 
<FilesMatch "\\.(css)$"> 
Header set Cache-Control "max-age=2692000, public" 
</FilesMatch> 
<FilesMatch "\\.(js)$"> 
Header set Cache-Control "max-age=216000, private" 
</FilesMatch> 
<FilesMatch "\\.(x?html?|php)$"> 
Header set Cache-Control "max-age=600, private, must-revalidate" 
</FilesMatch> 
Header unset ETag 
Header unset Last-Modified 
</IfModule> 

Đây là mã chính xác cùng tôi sử dụng trên mọi thuộc tính tôi quản lý và cung cấp cho tôi (và PageSpeed) những kết quả hài lòng nhất. Người ta có thể tranh luận về các quy tắc cụ thể, đó là lý do tại sao tôi nói rằng nó đáp ứng tôi, nhưng chắc chắn nó đáp ứng PageSpeed.

+2

Điều đó phụ thuộc vào ý bạn là "nhiều điều kiện". Các điều kiện phải được xử lý bởi máy chủ web trên mỗi yêu cầu HTTP vì vậy nếu bạn nghĩ về 65.000 điều kiện, thì đó chắc chắn không phải là ý tưởng hay – methode

+8

Chỉ cần một mẹo. Bạn chỉ có thể viết "truy cập cộng thêm 1 năm" hoặc thậm chí nhiều chỉ thị phức tạp hơn như "quyền truy cập cộng thêm 1 tháng 15 ngày 2 giờ" dễ đọc hơn và duy trì hơn giây. – GeneQ

+0

@GeneQ, +1 cho mẹo đó. Tôi được sử dụng để unix timestamps, có lẽ đó là lý do tại sao tôi sử dụng giây trong các quy tắc. – methode

1

Có thể thực hiện với cả htaccess và php. Thông thường, bạn sẽ không muốn buộc bộ nhớ đệm html thực tế kể từ nội dung động cơ sở dữ liệu điều khiển của nó (nó có thể được thực hiện với hàm php header() nếu cần). Điều bạn muốn lưu vào bộ nhớ cache là css & javascript và tệp hình ảnh bên ngoài.

Xem ở đây cho một giải pháp .htaccess: http://www.askapache.com/htaccess/apache-speed-expires.html