Trình duyệt bộ nhớ đệm là gì?
Bộ nhớ cache của trình duyệt là quá trình lưu trữ các tệp được yêu cầu trước đó trong bộ nhớ cache cục bộ của trình duyệt để giúp giảm thời gian tải. Khi tệp được lưu trữ cục bộ, yêu cầu ít hơn được yêu cầu phải được gửi đến máy chủ và ít dữ liệu hơn được yêu cầu tải xuống.
Có một số thành phần mà phải được kích hoạt để tận dụng đúng bộ nhớ đệm của trình duyệt. Ví dụ, bạn phải đảm bảo rằng bạn chỉ định trình xác thực bộ nhớ cache để giúp trình duyệt xác định xem tệp vẫn có thể được truy lục từ bộ nhớ cache cục bộ hoặc nếu yêu cầu phải được thực hiện cho máy chủ. Ngoài ra, bạn phải đặt đúng tiêu đề Hết hạn hoặc Bộ nhớ cache-Kiểm soát cho nội dung của bạn. Sử dụng cả hai sẽ là dư thừa. Hơn nữa, Gtmetrix thích Hết hạn hơn Cache-Control vì nó được hỗ trợ rộng rãi hơn. Do đó bài viết này sẽ tập trung vào việc sử dụng các tiêu đề Hết hạn khi trình diễn cách tận dụng bộ nhớ đệm của trình duyệt.
Cache-Control
Cache-Control cho phép chúng ta có quyền kiểm soát nhiều hơn một chút của bộ nhớ đệm trình duyệt của chúng tôi và nhiều người tìm thấy nó dễ dàng hơn để sử dụng một lần thiết lập.
# 1 Year for most static assets
<filesMatch ".(css|jpg|jpeg|png|gif|js|ico)$">
Header set Cache-Control "max-age=31536000, public"
</filesMatch>
Gzip Comporession (Vary hữu ích cho Magento)
<ifModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file \.(html?|txt|css|js|php|pl|asp|html)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image/.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</ifModule>
<ifmodule mod_deflate.c>
AddOutputFilterByType DEFLATE text/text text/html text/plain text/xml text/css application/x-javascript application/javascript
</ifmodule>
Tùy thuộc vào các file của trang web của bạn, bạn có thể thiết lập thời gian hết hạn khác nhau.
Nếu một số loại tệp nhất định được cập nhật thường xuyên hơn, bạn sẽ đặt thời gian hết hạn trước đó cho chúng (ví dụ: tệp CSS).
Mở tệp .htaccess của bạn. (hãy thông minh: tạo bản sao tệp .htaccess gốc của bạn, trong trường hợp bạn vô tình mắc lỗi và cần phải hoàn nguyên).
Bây giờ là lúc để cho phép các Expires tiêu đề module trong Apache (thiết lập 'ExpiresActive
' thành 'On'), vì vậy thêm video này vào tập tin .htaccess của bạn:
<IfModule mod_expires.c>
# Enable expirations
ExpiresActive On
</IfModule>
Nó có thể là hữu ích để thêm một “mặc định thị” cho một thời hạn sử dụng mặc định, vì vậy đó là 2 hàng bạn sẽ thêm tại:
<IfModule mod_expires.c>
# Enable expirations
ExpiresActive On
# Default directive
ExpiresDefault "access plus 1 month"
</IfModule>
Đó là cơ sở. Bây giờ thêm tất cả các dòng cho mỗi loại tập tin của bạn (bạn đã biết, những người bạn đã tạo trước đó cho bạn favicon, hình ảnh, CSS và Javascript). Bạn sẽ kết thúc với một đoạn mã mà trông giống như sau:
<IfModule mod_expires.c>
# Enable expirations
ExpiresActive On
# Default directive
ExpiresDefault "access plus 1 month"
# My favicon
ExpiresByType image/x-icon "access plus 1 year”
# Images
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/jpg "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
# CSS
ExpiresByType text/css "access 1 month”
# Javascript
ExpiresByType application/javascript "access plus 1 year"
</IfModule>
Bây giờ chạy thử nghiệm khác với GTmetrix và so sánh kết quả.Đây là kết quả cho trang web thử nghiệm của tôi, sau khi thực hiện Expires tiêu đề:
Khuyến nghị
- Hãy tích cực với bộ nhớ đệm của bạn cho tất cả các tài nguyên tĩnh
- Hạn sử dụng ở mức tối thiểu của một tháng (khuyến cáo: truy cập cộng 1 năm)
- Không đặt bộ nhớ đệm của bạn trước một năm!
Trình duyệt Caching sử dụng WordPress Plugin
W3 Total Cache: Một trong các plugin bộ nhớ đệm tốt nhất với nhiều tính năng như bộ nhớ đệm, CDN hội nhập (như MaxCDN) mà sẽ tăng tốc độ hiệu suất trang web của bạn.
Note
- Hãy chắc chắn rằng
mod_rewrite
được kích hoạt trên máy chủ web Apache của bạn, nếu không thì liên hệ với đội ngũ kỹ thuật máy chủ web của bạn để làm cho nó kích hoạt như là mô-đun rewrite sẽ là cần thiết để hoàn thành bộ nhớ đệm hành động .
- Cảnh báo! Nếu bạn đặt ngày hết hạn trong tương lai cho một cái gì đó và sau đó cập nhật một trong các tệp đó, bạn phải thay đổi tên của tệp để trình duyệt tìm nạp lại nó.
Ví dụ: nếu bạn đặt javascript của mình thành 1 năm và bạn cập nhật một trong các tệp javascript của mình, bạn phải đổi tên tệp thực. Cách tốt nhất để làm điều này là bằng cách tạo phiên bản, tức là myfile_v1.2.js, nhưng cách dễ dàng hơn là phải cẩn thận với tiêu đề Hết hạn của bạn (thiết lập từ 10 năm trở lên không bao giờ là tùy chọn tốt IMO).
Bạn có nhận thấy bất kỳ cải tiến nào cho trang web của mình không? Các điều trên đã xử lý tất cả các tệp của bạn được liệt kê trong “Tận dụng bộ nhớ đệm của trình duyệt” và “Thêm tiêu đề hết hạn”? Hãy cho tôi biết trong phần bình luận bên dưới.
Đây là những tệp bên ngoài, phải không? Bạn sẽ cần tải xuống '.JS',' css' bên ngoài và bất kỳ tệp nào khác bạn có và chạy chúng cục bộ. Bạn sẽ làm điều này bằng cách sử dụng 'cron'. Hãy xem câu trả lời của tôi về câu hỏi này: [Tận dụng bộ nhớ đệm của trình duyệt cho JS bên thứ 3] (http://stackoverflow.com/questions/38376871/leverage-browser-caching-for-3rd-party-js/38377857#38377857) – Lag
HI @thickguru Làm thế nào để đạt được w/o tải tập tin. Vì mục đích sử dụng CDN để cải thiện hiệu suất. Không thể làm điều đó –
Bạn không thể sợ. Không phải với các tệp bên ngoài. Nó sẽ chỉ hoạt động với các tệp cục bộ. Đó là lý do tại sao tôi đề xuất sử dụng 'cron'. – Lag