GET có điều kiện

Một phần của tài liệu Bài giảng mạng máy tính ths nguyễn xuân anh (Trang 50 - 52)

Lưu giữ lại các đối tượng đã từng được lấy, web cache có thể làm giảm thời gian chờ từ khi gửi yêu cầu đến khi nhận đối tượng và làm giảm lưu lượng thông tin truyền trên mạng Internet. Web cache được triển khai trên trình duyệt hay các cache máy chủ. Mặc dù web cache làm giảm thời gian chờ nhận đối tượng nhưng vấn đề nảy sinh là bản sao của đối tượng được lưu giữ trên máy khách có thể đã cũ, nói cách khác đối tượng trên máy chủ có thể đã thay đổi từ khi máy khách lấy đối tượng đó về. Tuy nhiên HTTP có cơ chế cho phép sử dụng cache trong khi vẫn đảm bảo đối tượng trong cache chưa bị cũ.

Hình 3.5 Client yêu cầu đối tượng thông qua cache

Cơ chế này chính là GET có điều kiện (conditional GET). một bản tin HTTP được gọi là có điều kiện nếu: (1) thông điệp sử dụng phương thức GET và (2) thông điệp có trường If- modified- since trong tiêu đề. Ví dụ, trình duyệt yêu cầu một đối tượng từ máy chủ mà trong cache của nó chưa có:

GET /english/index.html HTTP/1.0 User-agent :Mozilla/4.0

Sau đó máy chủ gửi bản tin trả lời kèm với đối tượng

HTTP /1.0 200 OK

Date : Thu, 01 Dec 2011 11:00:15 Server : Apache/1.3.0 (Unix)

Last-modified: Mon, 14 Nov 2011 19:29:04 Content-type :image/gif

(data data …….)

Trình duyệt hiển thị đối tượng đồng thời lưu lại đối tượng trong cache cục bộ cùng với thời gian trong trường Last-modined kèm theo đối tượng. Một tuần sau, người sử dụng lại yêu cầu đối tượng này trong khi đối tượng đã được lưu trên cache. Nhưng đối tượng có thể đã bị thay đổi trong thời gian 1 tuần nên trình duyệt phải thực hiện kiểm tra bằng cách gửi một bản tin GET có điều kiện, cụ thể browser gửi đi:

GET /english/index.html HTTP/1.0 User-agent : Mozỉlla /4.0

If-modified-since : Thu, 01 Dec 2011 11:00:15

Giá trị trường If-modified-since: là giá trị của trường Last- modified: trong tiêu đề mà máy chủ đã gửi cho máy khách tuần trước. Bản tin GET có điều kiện yêu cầu máy chủ chỉ gửi đối tượng cho máy khách nếu như đối tượng đó được cập nhật sau thời gian được chỉ ra trên.

Giả sử đối tượng đó không thay đổi gì từ Thu, 01 Dec 2011 11:00:15 thì máy chủ sẽ gửi cho máy khách bản tin:

HTTP /1.0 304 Not modified Date : Thu, 08 Dec 2011 12:05:17

Server: Apache 11. 3. 0 (Unix) (empty entity body)

Bản tin trả lời này không kèm theo đối tượng. Việc gửi kèm đối tượng chi làm lãng phi đường truyền và làm tăng thời gian máy khách phải chờ để nhận được đối tượng, đặc biệt khi đối tượng có kích thước lớn. Giá trị trường trạng thái là 304 Not modified báo cho máy khách biết đối tượng mà máy khách lưu trong cache giống đối tượng gốc tại máy chủ, do đó máy khách có thể sử dụng lại đối tượng này.

Một phần của tài liệu Bài giảng mạng máy tính ths nguyễn xuân anh (Trang 50 - 52)