htaccess cache
- Khi trình duyệt đọc file HTML, thì sẽ load những nội dung như: image, css, javascript, video, pdf, ..., thao tác load này sẽ cần thời gian, tùy vào nội dung các file này mà quá trình load nhanh hay chậm.
- Mỗi khi load lại file HTML thì quá trình trên sẽ tiến hành lại từ đầu, tức là load từng file cho tới khi tất cả các file được load xong, việc này sẽ gây khó chịu cho người dùng, vì phải chờ đợi.
- Cache ra đời nhằm giải quyết tình trạng này, giúp trình duyệt có thể lưu trữ lại thông tin các file sau khi người dùng lần đầu tiên truy cập trang, giúp cho các file này không cần phải load lại lần nữa khi người dùng truy cập cho những lần sau.
- Cách thực hiện cach file với
.htaccessnhư sau:
<filesmatch "\.(file1|file2|...|fileN)$"> Header set Cache-Control "max-age=thời_gian_theo_giây, public, proxy-revalidate" </filesmatch>
file1, ..., fileNlà định dạng file bất kỳ mà bạn muốn sử dụng cache.Header set Cache-Controlgọi header xử lý cache.max-age=thời_gian_theo_giâytùy theo bạn muốn cache file trong thời gian bao lâu (thời gian tồn tại cache), theo phút, giờ, ngày, hay năm mà quy ra sử dụng giây tương ứng.- Giây: 1
- Phút: 60
- Giờ: 3600
- Ngày: 86400
- Tháng: 2592000
- Năm: 31536000
2592000 x 2 = 5184000.- Xét quyền riêng tư, có 2 giá trị:
privatenội dung chỉ được lưu trữ ở client.publicngoài việc lưu trữ ở client, dữ liệu cũng được lưu trữ bởi các proxy (đây là dạng lưu trữ cache server, mục đích phục vụ nhiều người dùng truy xuất cùng một nội dung).
proxy-revalidategiá trị tùy chọn, không bắt buộc, khi sử dụng có nghĩa là bắt buộc dữ liệu phải được xác thực từ phía server, tránh trường hợp mạng yếu, dữ liệu không gửi được tới server.
Ví dụ htaccess cache
<filesmatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$"> Header set Cache-Control "max-age=31536000, public" </filesmatch>
- Nội dung trên là cache tất cả các file
ico|pdf|flv|jpg|jpeg|png|gif|js|css|swftrong vòng 1 năm. - Hoặc ta có thể kết hợp
proxy-revalidateđể bắt buộc dữ liệu cache phải được xác thực từ phía server, ta viết như sau:
<filesmatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$">
Header set Cache-Control "max-age=31536000, public, proxy-revalidate"
</filesmatch>

