Đối với một trang web thì vấn đề được quan tâm hàng đầu đó có lẽ là
tốc độ. Ai cũng ghét phải chờ đợi, vâng bản thân tôi cũng thế. Cứ mỗi
lần vào một trang web nào đó, bạn lại phải ngồi chờ nó tải từng dòng
chữ, từng tấm hình, từng đoạn video clip, rồi nào là javascript, … . Nếu
gặp phải người khó tính, họ sẽ bỏ đi ngay.
Lần thứ nhất trang load bình thường,
nhưng từ lần thứ 2 thì nó load gần như tức thì. Và càng lạ hơn, thậm chí
khi bị mất kết nối, vẫn truy cập được vào web. Theo bạn Phúc chủ blog
này cho biết là dùng Plugin W3 ToTal Cache của WP.
Mình có thử mổ xẻ plugin này xem thử. Với toàn bộ kiến thức cùng kết quả xét nghiệm W3 ToTal Cache đã được mình đúc kết trong bài viết này. Chúng ta hãy cùng tìm hiểu về HTTP cache ngay sau đây.
Cache là gì?
Trong lập trình cache thường được xem như những kết quả, trị số tạm
bợ do chương trình tạo ra, và lưu trữ nó lại trên ổ cứng. Việc này sẽ
tiết kiệm thời gian thay vì đi tính toán lại những giá trị đó.
Trong lĩnh vực Web, Trình duyệt có thể sao chép những nội dung như
hình ảnh, stylesheet, javascript thậm chí là toàn trang và lưu chúng
trên ổ cứng của người dùng. Để lần truy xuất sau, họ sẽ không cần phải
tải lại những nội dung đó. Mà thay vào đó sẽ dùng cache đã được lưu từ
lần truy xuất trước => tộc độ truy cập của những lần sau sẽ được cải
thiện đáng kể.
Xem ví dụ về một quá trình yêu cầu và tải trang web của trình duyệt:
2. Server: (Lục lọi trong mớ file hỗn độn …)
3. Server: Có, nó đây!
4. Trình duyệt: Được rồi, ta đang tải và hiện cho người dùng xem.
Không lẽ mỗi lần truy cập đều phải theo khuôn khổ như vậy. Thật lãng phí tài nguyên hệ thống, và thời gian của người duyệt web. Hãy xem cách phương pháp hoạt động HTTP Caching dưới đây.
Phương pháp 1: Last-Modified
Lần này giả dụ, trình duyệt cần tải file logo.png và đây là lần đầu tiên. Server trả về file logo.png với một dòng trong HTTP header như sau:
Last-modified: Thu, 18 Aug 2011 04:00:25 GMTBấy giờ trình duyệt sẽ hiểu là file logo.png được tạo và chỉnh sửa lần cuối cùng vào thứ 5 ngày 18 tháng 8 năm 2011 lúc 4 giờ 0 phút 25 giây. Nếu lần cuối cùng trình duyệt tải file logo.png này sớm hơn thời gian trên, nó sẽ tự động tải lại file này. Và ngược lại nó sẽ lấy trong cache ra.
Chu trình ở trên sẽ diễn ra như sau:
2. Server: (Kiểm tra ngày thời gian chỉnh sửa cuối cùng… )
3. Server: File của mi là mới nhất rồi, khỏi tải.
4. Trình duyệt: À ha, được! vậy ta dùng cache.
Như vậy ta đã tiết kiệm được một khối thời gian thây vì tải lại file logo.png. Đôi lúc để gọn hơn, server thường chỉ thêm một dòng mang tên “Not Modified” vào phần HTTP Header. Thế là trình duyệt cũng đũ hiểu.
Phương pháp 2: ETag
Rất đơn giản, server sẽ tạo một chuỗi Hash cho file logo.png gọi là ETag, mỗi file khác nhau đều có chuỗi ETag khác nhau. Server sẽ gửi kèm ETag này cũng với file logo.png. Trình duyệt chỉ cần so sánh ETag này với ETag của file logo.png trước đó mà nó đã tải. Nếu giống nhau thì sẽ dùng cache để thay thế. Ngược lại thì tải lại file logo.png
Tham số ETag trong HTTP Header sẽ trong giống thế này đây:
ETag: ead145fCuộc đối thoại giữa Trình duyệt và Server:
2. Server: (kiểm tra hash logo.png …)
3. Server: Ừ phải rồi nó là “ead145f”.
4. Browser: Okê, vậy ta dùng cache.
Cũng tương tự last-modifed, ETags thường được áp dụng cho file javascript. Dùng ETag sẽ nhanh chóng giúp trình duyệt phát hiện điểm khác nhau để quyết định có tải file mới hay không. Thường thì last-modifed được dùng rộng rãi hơn.
Phương pháp 3: Expires
Cái này có lẽ đơn giản hơn, server chỉ cần gửi file và kèm thêm thông số Expires:
Expires: Thu, 18 Aug 2011 04:00:25 GMTTrình duyệt sẽ chỉ tải lại file này khi đã hết thời hạn được ghi trong Expires. Như hạn sử dụng vậy ấy .
1. Trình duyệt: À à, xem hạn sử dụng nào…
2. Trình duyệt: Còn hạn sử dụng, vậy thì dùng cache tiếp.
File này sẽ được mở ra tức thì.
Phương pháp 4: Max-Age
Một loại hạn sử dụng tương tự Expires, nhưng thời gian không được quy định cụ thể mà sẽ dựa trên thời gian hiện tại + Max-age của file. Tham số này được quy định trong HTTP header như sau:
Cache-control: max-age=86400
Max-Age được tính bằng giây. Bảng chuyển đổi:
1 ngày = 86400 giây
1 tuần = 604800 giây
1 tháng = 2629000 giây
1 năm = 31536000 giây
Cache-control: public => Cache được lưu trữ và công khai với mọi người dùng trên hệ thống, tức là xài chung.
Cache-control: private => Mỗi user khác nhau trên một hệ thống, sẽ lưu cache riêng biệt. Mạnh ai náy xài.
Cache-control: no-cache => Không cache trang này, thích hợp cho những trang có nội dung thay đổi liên tục, như Search Engine chẳng hạn.
Các giá trị như public, private và no-cache. Có thể thêm vào chung với max-age như sau:
Cache-control: max-age=86400, public
Khóa đào tạo Power BI phân tích báo cáo để bán hàng thành côngKHÓA HỌC LẬP TRÌNH PYTHON TỪ CƠ BẢN ĐẾN CHUYÊN NGHIỆPKhóa học Lập trình Visual Foxpro 9 - Dành cho nhà quản lý và kế toánKhóa học hướng dẫn về Moodle chuyên nghiệp và hayXây dựng hệ thống đào tạo trực tuyến chuyên nghiệp tốt nhất hiện nay.Khóa học AutoIt dành cho dân IT và Marketing chuyên nghiệpKhóa học hướng dẫn sử dụng Powerpoint từ đơn giản đến phức tạp HIỆU QUẢKhóa học Thiết kế, quản lý dữ liệu dự án chuyên nghiệp cho doanh nghiệp bằng BizagiKhóa học Phân tích dữ liệu sử dụng Power Query trong ExcelKhóa học “Thiết kế bài giảng điện tử”, Video, hoạt hìnhkiếm tiền Youtube bằng phần mềm Camtasia StudioKhóa học HƯỚNG DẪN THIẾT KẾ VIDEO CLIP CHO DÂN MARKETING CHUYÊN NGHIỆPHƯỚNG DẪN THIẾT KẾ QUẢNG CÁO VÀ ĐỒ HỌA CHUYÊN NGHIỆP VỚI CANVAHãy tham gia khóa học để trở thành người chuyên nghiệp. Tuyệt HAY!😲👍GOOGLE SPREADSHEETS phê không tưởngKhóa học sử dụng Adobe Presenter-Tạo bài giảng điện tửKhóa học sử dụng Edmodo để dạy và học hiện đại để thành công
Cập nhật công nghệ từ Youtube tại link: congnghe.hocviendaotao.com
Tham gia nhóm Facebook
Để tham gia khóa học công nghệ truy cập link: http://thuvien.hocviendaotao.com
Mọi hỗ trợ về công nghệ email: dinhanhtuan68@gmail.com