Header ads

Header ads
» » Cơ chế hoạt động của HTTP Cache

Đố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:


1. Trình duyệt: Có file index.html không?
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 GMT
Bấ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:

1. Trình duyệt: Đưa file logo.png đây, mà Last-modified phải mới hơn 18/8/2011 nghe.
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: ead145f
Cuộc đối thoại giữa Trình duyệt và Server:

1. Trình duyệt: Mi xem dùm ta file logo.png phải có hash là “ead145f” không?
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 GMT
Trì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 .

Trong trường hợp này thậm chính, trình duyệt không cần liên lạc với server. Đây là phương pháp mà W3 ToTal Cache đã dùng.
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
Thông tin
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
BONUS thêm các tham số cho Cache-control
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ông
KHÓA HỌC LẬP TRÌNH PYTHON TỪ CƠ BẢN ĐẾN CHUYÊN NGHIỆP
Khóa học Lập trình Visual Foxpro 9 - Dành cho nhà quản lý và kế toán
Khóa học hướng dẫn về Moodle chuyên nghiệp và hay
Xâ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ệp
Khó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 Bizagi
 Khoa hoc hay
Khóa học Phân tích dữ liệu sử dụng Power Query trong Excel
Khóa học Phân tích dữ liệu sử dụng TableAU - Chìa khóa thành công!
Nhấn vào đây để bắt đầu khóa học
Khóa học “Thiết kế bài giảng điện tử”, Video, hoạt hình 
kiếm tiền Youtube bằng phần mềm Camtasia Studio
Khóa học HƯỚNG DẪN THIẾT KẾ VIDEO CLIP CHO DÂN MARKETING CHUYÊN NGHIỆP
 Xây dựng website​​​​
HƯỚNG DẪN THIẾT KẾ QUẢNG CÁO VÀ ĐỒ HỌA CHUYÊN NGHIỆP VỚI CANVA
Hãy tham gia khóa học để trở thành người chuyên nghiệp. Tuyệt HAY!😲👍
 Khoa hoc hay
MICROSOFT ACCESS
GOOGLE SPREADSHEETS phê không tưởng
 Khoa hoc hay
Khóa hoc lập trình bằng Python tại đây
Hacker mũ trắng
Hãy tham gia khóa học để biết mọi thứ
Để tham gia tất cả các bài học, Bạn nhấn vào đây 
Khóa học sử dụng Adobe Presenter-Tạo bài giảng điện tử
 Khoa hoc hay
Design Website
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

About Học viện đào tạo trực tuyến

Xinh chào bạn. Tôi là Đinh Anh Tuấn - Thạc sĩ CNTT. Email: dinhanhtuan68@gmail.com .
- Nhận đào tạo trực tuyến lập trình dành cho nhà quản lý, kế toán bằng Foxpro, Access 2010, Excel, Macro Excel, Macro Word, chứng chỉ MOS cao cấp, IC3, tiếng anh, phần mềm, phần cứng .
- Nhận thiết kế phần mềm quản lý, Web, Web ứng dụng, quản lý, bán hàng,... Nhận Thiết kế bài giảng điện tử, số hóa tài liệu...
HỌC VIỆN ĐÀO TẠO TRỰC TUYẾN:TẬN TÂM-CHẤT LƯỢNG.
«
Next
Bài đăng Mới hơn
»
Previous
Bài đăng Cũ hơn