Lưu vào bộ nhớ đệm trong HTTP

Mô tả chi tiết về các tùy chọn bộ nhớ đệm có sẵn thông qua giao thức HTTP

Bộ nhớ đệm là một kỹ thuật có thể giúp kết nối mạng nhanh hơn, vì càng ít thứ cần chuyển thì càng tốt.

Nhiều tài nguyên có thể rất lớn và rất tốn kém về thời gian cũng như chi phí thực tế (ví dụ: trên thiết bị di động) để truy xuất.

Có các chiến lược bộ nhớ đệm khác nhau được tạo sẵn bởi HTTP và được sử dụng bởi các trình duyệt.

Không có bộ nhớ đệm

Đầu tiênCache-Controltiêu đề có thể yêu cầu trình duyệt không bao giờ sử dụng phiên bản được lưu trong bộ nhớ cache của tài nguyên mà không kiểm tra giá trị ETag trước (thêm phần này sau), bằng cách sử dụngno-cachegiá trị:

Cache-Control: no-cache

Một hạn chế hơnno-storetùy chọn cho trình duyệt (và tất cả các thiết bị mạng trung gian) thậm chí không lưu trữ tài nguyên trong bộ nhớ cache của nó:

Cache-Control: no-store

NếuCache-Controlmax-agegiá trị, được sử dụng để xác định số giây tài nguyên này có giá trị như một bộ nhớ cache:

Cache-Control: max-age=3600

CácExpirestiêu đề

Khi một yêu cầu HTTP được gửi đi, trình duyệt sẽ kiểm tra xem nó có bản sao của trang đó trong bộ nhớ cache hay không, dựa trên URL mà bạn yêu cầu.

Nếu có, nó sẽ kiểm tra trang để tìmsự tươi mát.

Một trang là mới nếuPhản hồi HTTPExpirestiêu đềgiá trị nhỏ hơn ngày giờ hiện tại.

Tiêu đề Expires có dạng sau:

Expires: Sat, 01 Dec 2018 16:00:00 GMT

GET có điều kiện

Có nhiều cách khác nhau để thực hiện nhận có điều kiện. Tất cả đều dựa trên việc sử dụngIf-*tiêu đề yêu cầu:

  • sử dụngIf-Modified-SinceLast-Modified
  • sử dụngIf-None-MatchETag

Sử dụngIf-Modified-SinceLast-Modified

Trình duyệt có thể gửi một yêu cầu đến máy chủ và thay vì chỉ yêu cầu trang, nó thêm mộtIf-Modified-Sincetiêu đề, dựa vàoLast-Modifiedgiá trị tiêu đề mà nó nhận được từ trang được lưu trong bộ nhớ cache.

Điều này yêu cầu máy chủ chỉ trả về một phần nội dung phản hồi (nội dung trang) nếu tài nguyên đã được cập nhật kể từ ngày đó.

Nếu không, máy chủ trả về304 Not Modifiedphản ứng.

Sử dụngIf-None-MatchETag

Máy chủ Web (tùy thuộc vào thiết lập, cách phân phối trang, v.v.) có thể gửi mộtTiêu đề ETag.

Đó là định danh của một tài nguyên. Mỗi khi tài nguyên thay đổi, chẳng hạn như nó được cập nhật, ETag cũng sẽ thay đổi.

Nó giống như một tổng kiểm tra.

Trình duyệt gửi mộtIf-None-Matchtiêu đềcó chứa một (hoặc nhiều) giá trị ETag.

Nếu không có kết quả nào phù hợp, máy chủ sẽ trả về phiên bản mới của tài nguyên, nếu không304 Not Modifiedphản ứng.


Các hướng dẫn khác về mạng: