Cách thức giao tiếp giữa Trình duyệt Web với Máy chủ Web

Trình duyệt Web là một phần mềm ứng dụng cho phép xem và tìm hiểu thông tin trên Internet. Thông qua trình duyệt Web, người dùng có thể tương tác với các văn bản, hình ảnh, phim… trên bất cứ trang web nào bắt đầu từ việc truy cập thông việc việc nhập URL vào thanh địa chỉ.

Ở bài trước chúng ta đã phân tích Tác dụng của Domain và Hosting khi triển khai phát triển Website. Trong bài dưới đây, chúng ta tìm hiểu về mối tương tác giữa trình duyệt web và máy chủ web trong quá trình người dùng truy cập website.

Trình duyệt Web

Trình duyệt Web là một phần mềm ứng dụng cho phép xem và tìm hiểu thông tin trên Internet. Thông qua trình duyệt Web, người dùng có thể tương tác với các văn bản, hình ảnh, phim… trên bất cứ trang web nào bắt đầu từ việc truy cập thông việc việc nhập URL vào thanh địa chỉ.
Kể từ khi Tim Berners-Lee – Giám đốc của W3C, người sáng lập nền tảng www – World Wide Web; đưa ra trình duyệt web đầu tiên WorldWideWeb (sau này đổi thành Nexus) vào ngày 25/12/1990 đến nay có hàng trăm trình duyệt ra đời, trong đó các trình duyệt được sử dụng phổ biến nhất hiện nay là:
Internet Explorer Google Chrome Mozilla Firefox Safari Opera Cốc cốc
Trình duyệt Internet Explorer Trình duyệt Chrome Trình duyệt Firefox Trình duyệt Safari Trình duyệt Opera Trình duyệt Cốc Cốc
16/08/1995 11/12/2008 09/11/2004 07/01/2003 04/1995 14/05/2013
Microsoft Google Mozilla Apple Opera Cốc cốc

Phương thức giao tiếp siêu văn bản (HTTP – HyperText Transfer Protocol)

HTTP - HyperText Transfer Protocol - Phương thức giao tiếp siêu văn bản
HTTP - HyperText Transfer Protocol - Phương thức giao tiếp siêu văn bản
 
Trình duyệt web giao tiếp với máy chủ web để lấy dữ liệu các trang web thông qua việc sử dụng giao thức truyền dẫn siêu văn bản (HTTP). Đó là một giao thức giao tiếp dựa trên TCP/IP được sử dụng để cung cấp dữ liệu trên Mạng diện rộng toàn cầu (World Wide Web). Nó cung cấp các tiêu chuẩn để các máy tính giao tiếp được với nhau. HTTP xác định việc làm thế nào để máy khách yêu cầu xây dựng và gửi dữ liệu đến máy chủ; và cách thức máy chủ phản hồi lại những yêu cầu này.
HTTP máy khách: là một chương trình (Trình duyệt web hoặc máy khách khác) dùng để thiết lập một kết nối đến máy chủ nhằm gửi một hoặc nhiều thông điệp yêu cầu HTTP.
HTTP máy chủ: là một chương trình (Máy chủ web Apache hoặc Dịch vụ thông tin mạng - IIS) dùng để chấp nhận các kết nối đến máy chủ từ yêu cầu HTTP bằng cách gửi thông tin phản hổi HTTP.
Khi người dùng nhập yêu cầu một địa chỉ đường dẫn trang web vào thanh địa chỉ của trình duyệt và xác nhận tìm kiếm tài nguyên trang web yêu cầu thi máy khách HTTP sẽ gửi một yêu cầu HTTP tới máy chủ dưới dạng thông báo bao gồm các thông tin sau:

- Một dòng yêu cầu: bao gồm phương thức yêu cầu, URI yêu cầu và phiên bản giao thức. 

+ Phương thức yêu cầu chỉ ra cách thức thực hiện trên tài nguyên được xác định bởi URI yêu cầu.
GET Lấy thông tin từ trên máy chủ. Chỉ lấy dữ liệu mà không ảnh hưởng tới dữ liệu khác.
HEAD Lấy thông tin từ trên máy chủ. Chỉ chuyển dòng trạng thái và phần tiêu đề.
POST Gủi dữ liệu lên máy chủ xử lý thông qua các biểu mẫu HTML.
PUT Thay thế tất cả tài nguyên đích hiện tại bằng nội dung tải lên.
DELETE Xóa ất cả các dữ liệu tài nguyên đích được chỉ ra trong URI.
CONNECT Thiết lập một kết nối tới máy chủ được xác định bởi URI.
OPTIONS Mô tả các thông tin tùy chọn cho tài nguyên đích.
TRACE Thực hiện một vài lần kiểm tra để dẫn đến cùng một tài nguyên đích.
+ URI yêu cầu: là một bộ nhận dạng tài nguyên thống nhất để định danh nguồn tài nguyên đến đáp ứng lại yêu cầu. Đó có thể là Đường dẫn tuyệt đối hoặc Đường dẫn tương đối.
HTTP sử dụng Định danh tài nguyên thống nhất (URI - Uniform Resource Identifier) để xác định một tài nguyên để thiết lập kết nối. Một khi kết nối được thiết lập, các thông báo HTTP được truyền theo một dạng tương tự như sử dụng Internet mail và MIME (Multipurpose Internet Mail Extensions).
URL được gửi qua Internet bằng cách sử dụng bộ ký tự ASCII, thường chứa các ký tự bên ngoài bộ ASCII. Vì vậy các ký tự không an toàn phải được thay thế bằng % và theo sau bởi 2 chữ số thập lục phân.

- Tiếp theo là các trường thông tin yêu cầu cho phép máy khách truyền các thông tin thêm vào yêu cầu và cả thông tin máy khách về máy chủ.

Sau khi nhận và phân tích được một thông báo yêu cầu từ máy khách, máy chủ sẽ phản hồi lại với một thông báo HTTP phản hồi bao gồm:

 - Một dòng trạng thái: bao gồm Phiên bản HTTP, mã trạng thái thông báo thành công hoặc lỗi và cuối cùng là một đoạn văn bản mô tả trạng thái đó. 

+ Mã trạng thái: là một số gồm 3 chữ số, trong đó chữ số đầu tiên của mã trạng thái xác định loại phản hồi và 2 chữ số còn lại không có bất kỳ vai trò phân loại nào.
Mã trạng thái và mô tả Giải thích
1xx: Information Yêu cầu đã được nhận và đang được tiếp tục xử lý.
100 Continue Chỉ có một phần yêu cầu được máy chủ nhận, nhưng không bị từ chối, máy khách nên tiếp tục với yêu cầu.
101 Switching Protocols Máy chủ chuyển mạch giao thức.
2xx: Success Hành động đã được hiểu, chấp nhận và xử lý thành công.
200 OK Yêu cầu hợp lệ.
201 Created Yêu cầu hoàn tất và tạo ra một tài nguyên mới.
202 Accepted Yêu cầu được chấp nhận để xử lý, nhưng quá trình xử lý không hoàn chỉnh.
203 Non-authoritative Information Thông tin trong thực thể tiêu đề là từ bản sao cục bộ hoặc của bên thứ ba, không phải từ máy chủ gốc.
204 No Content Một mã trạng thái và một tiêu đề đưa ra trong phản hồi, nhưng không có thực thể nội dung trong phản hồi.
205 Reset Content Trình duyệt nên xóa các biểu mẫu sử dụng cho giao dịch này để thêm dữ liệu vào.
206 Partial Content Máy chủ đang trả về một phần dữ liệu với kích cỡ được yêu cầu.
3xx: Redirection Phải thực hiện thêm hành động để hoàn thành yêu cầu.
300 Multiple Choices Một danh sách liên kết. Người dùng có thể chọn một liên kết và đi đến vị trí đó. Tối đa 5 địa chỉ.
301 Moved Permanently Trang được yêu cầu đã chuyển sang một đường dẫn mới.
302 Found Trang được yêu cầu đã tạm thời di chuyển đến một đường dẫn mới.
303 See Other Trang được yêu cầu có thể được tìm thấy dưới một đường dẫn khác.
304 Not Modified Mã phản hồi của tiêu đề If-Modified-Since hoặc If-None-Match, nơi URL chưa được sửa đổi kể từ ngày xác định.
305 Use Proxy URL yêu cầu phải được truy cập thông qua proxy được đề cạp trong tiêu để Location.
306 Unused Mã được sử dụng cho phiên bản trước đó. Hiện không được sử dụng.
307 Temporary Redirect Trang được yêu cầu đã tạm thời chuyển đến một đường dẫn mới.
4xx: Client Error Yêu cầu có cú pháp không chính xác hoặc không đầy đủ.
400 Bad Request Máy chủ không hiểu yêu cầu.
401 Unauthorized Trang yêu cầu cần phải đăng nhập tài khoản và mật khẩu.
402 Payment Required Bạn không thể sử dụng mã này.
403 Forbidden Trang yêu cầu hiện bị cấm truy cập.
404 Not Found Máy chủ không thể tìm thấy trang được yêu cầu.
405 Method Not Allowed Yêu cầu không được phép.
406 Not Acceptable Máy chủ chỉ có thể tạo ra một phản hồi mà không được chấp nhận bởi máy khách.
407 Proxy Authentication Required Bạn phải xác thực với một máy chủ proxy trước khi yêu cầu này có thể yêu cầu máy chủ.
408 Request Timeout Yêu cầu vượt quá thời gian được đưa ra bởi máy chủ để chờ xử lý.
409 Conflict Yêu cầu không thể hoàn thành do xung đột.
410 Gone Trang yêu cầu không còn tồn tại.
411 Length Required Trường “Content-Length” không được định nghĩa.
412 Precondition Failed Điều kiện trước đó đưa ra trong danh sách để máy chủ đánh giá là sai.
413 Request Entity Too Large Máy chủ không chấp nhận yêu cầu khi yêu cầu quá lớn.
414 Request-url Too Long Máy chủ không chấp nhận yêu cầu vì URL quá dài.
415 Unsupported Media Type Máy chủ không chấp nhận yêu cầu vì loại kiểu dữ liệu không được hỗ trợ.
416 Requested Range Not Satisfiable Yêu cầu dãy byte nằm ngoài giới hạn.
417 Expectation Failed Không thể đáp ứng một tiêu đề yêu cầu Expect của máy chủ này.
5xx: Server Error Lỗi từ máy chủ khi không thể hoàn thành một yêu cầu hợp lệ.
500 Internal Server Error Yêu cầu không hoàn thành. Máy chủ ở trong tình trạng quá tải.
501 Not Implemented Yêu cầu không hoàn thành. Máy chủ không hỗ trợ chức năng được yêu cầu.
502 Bad Gateway Yêu cầu không hoàn thành. Máy chủ nhận được một phản hồi không hợp lệ.
503 Service Unavailable Yêu cầu không hoàn thành. Máy chủ đang tạm thời quá tải hoặc bảo dưỡng.
504 Gateway Timeout Cổng đã hết thời gian.
505 HTTP Version Not Supported Máy chủ không hỗ trợ phiên bản HTTP.
Các mã trạng thái HTTP có thể được mở rộng và các ứng dụng HTTP không bắt buộc phải hiểu ý nghĩa của tất cả các mã trạng thái được đăng ký.

 - Tiếp theo là các trường thông tin phản hồi cho phép máy khách truyền các thông tin thêm vào phản hồi và cả thông tin máy chủ.

Trường tiêu đề HTTP cung cấp thông tin bắt buộc về yêu cầu hoặc phản hồi, hoặc về đối tượng được gửi trong thông báo phần thân.

- Tiêu đề chung: có thể áp dụng cho cả thông báo yêu cầu và thông báo phản hồi.

Cache-Control Đước sử dụng để chỉ định các chỉ thị phải được tuân theo bởi tất các các hệ thống lưu trữ.  
Connection Cho phép người gửi chỉ định các tùy chọn mong muốn cho kết nối cụ thể đó hoặc không được truyển đổi bởi các proxy trên các kết nối khác. - Kết nối bị đóng ngay sau khi hoàn thành phản hồi:
Connection: close
- Kết nối vẫn tiếp tục mà không tự động đóng sau khi hoàn thành một giao dịch:
Connection: keep-alive
Date Tất cả định dạng ngày/giờ trong HTTP phải được trình bày theo Thời gian Trung bình Greenwich (GMT), dưới dạng  3 kiểu sau:
+ RFC 882, cập nhật bởi RFC 1123
+ RFC 850, đưa ra bởi RFC 1036
+ Định dạng tiêu chuẩn ANSI C
Sun, 06 Nov 1994 08:49:37 GMT
Sunday, 06-Nov-94 08:49:37 GMT
Sun Nov  6 08:49:37 1994 
Pragma Được sử dụng cùng các chỉ thị thực thi có thể áp dụng cho bất kỳ người nhận nào trong chuỗi yêu cầu/phản hồi. Pragma: no-cache
Trailer Cho biết tập các trường tiêu đề được đưa ra trong thôn báo mã hóa với mã hóa chuyển đổi chunked. Nó không được dùng cùng các trường tiêu đề Transfer-Encoding, Content-Length, Trailer.  
Transfer-Encoding Cho biết kiểu đã được áp dụng cho thông báo phần thân chuyển đổi mã giữa người gửi và người nhận. Điều này không giống như mã nội dung bởi mã chuyển đổi là thuộc tính của thông báo chứ không trong thực thể phần thân. Transfer-Encoding: chunked
Upgrade Cho phép máy khách để chỉ định những giao thức truyền thông thêm nào được nó hỗ trợ và muốn sử dụng nếu máy chủ tìm thấy nó phù hợp để chuyển đổi các phương thức. Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11
Via Được sử dụng bởi gateway và proxy để chỉ ra các giao thức và người nhận trung gian. Via: 1.0 fred, 1.1 webseo360.com (Apache/1.1)

- Tiêu đề yêu cầu máy khách: chỉ áp dụng cho các thông báo yêu cầu.

Accept Được sử dụng để chỉ định kiểu phương tiện được chấp nhận trong phản hồi. Accept: text/html
Accept-Charset Được sử dụng để chỉ ra bộ ký tự được chấp nhận trong phản hồi. Accept-Charset: utf-8
Accept-Encoding Cũng giống như Accept, nhưng hạn chế mã nội dung được chấp nhận trong phản hồi. Accept-Encoding: compress, gzip
Accept-Language Cũng giống như Accept, nhưng hạn chế tập ngôn ngữ được ưu tiên sử dụng trong phản hồi. Accept-Language: vi
Authorization Bao gồm thông tin xác thực của người dùng cho vùng tài nguyên được yêu cầu. Authorization: BASIC Z3Vlc3Q6Z3Vlc3QxMjM=
Cookie Bao gồm cặp tên – giá trị của thông tin lưu trữ cho URL. Cookie: hovaten=MaiDucThach
Expect Được sử dụng để chỉ ra tập các hành vi máy chủ được yêu cầu bởi máy khách. Expect : 100-continue | expectation-extension
From Gồm một địa chỉ email cho phép người dùng kiểm soát các điều khiển trong yêu cầu của người dùng. From: phattrienwebsite2017@gmail.com
Host Được sử dụng để chỉ định máy chủ Internet và Port của tài nguyên được yêu cầu. Host: webseo360.com
If-Match Được sử dụng với một phương thức để cho phép kiểm tra điều kiện. Tiêu đề này yêu cầu máy chủ thực hiện theo yêu cầu của phương thức khi giá trị nhất định này khớp với các thẻ thực thể đã cho bởi ETag. If-Match: *
If-Modified-Since Được sử dụng với một phương thức để là cho nó có điều kiện. Nếu URL yêu cầu không được sửa đổi kể từ thời gian được chỉ định, một thực thể sẽ không được trả về từ máy chủ. If-Modified-Since: Web, 12 Apr 2017 19:43:31 GMT
If-None-Match Được sử dụng với một phương thức để làm cho nó có điều kiện. Tiêu đề này yêu cầu máy chủ thực hiện theo yêu cầu của phương thức chỉ khi một trong các giá trị nhất định trong thẻ này khớp với các thẻ thực thể đã cho bởi ETag If-None-Match: *
If-Range Được sử dụng với GET để yêu cầu chỉ phần thực thể bị thiếu, nếu nó không được thay đổi và toàn bộ thực thể nếu nó đã được thay đổi. If-Range: Web, 12 Apr 2017 19:43:31 GMT
If-Unmodified-Since Được sử dụng với một phương thức để làm theo điều kiện của nó. If-Unmodified-Since: Web, 12 Apr 2017 19:43:31 GMT
Max-Forwards Cung cấp cho các phương thức TRACE và OPTIONS để giới hạn số proxy hoặc gateway để có thể chuyển tiếp yêu cầu tới máy chủ kế tiếp. Max-Forwards : 5
Proxy-Authorization Cho phép máy khách tự định danh chính nó (hoặc người dùng của nó) tới một proxy nơi yêu cầu xác thực. Proxy-Authorization : credentials
Range Chỉ định phần nội dung được yêu cầu từ tài liệu. Range: bytes=0-10000
Referer Cho phép máy khách chỉ định địa chỉ URL của tài nguyên từ URL được yêu cầu. Referer: http://webseo360.com/index.html
TE Cho biết mã hóa mở rộng mà nó sẵn sang chấp nhận trong phản hồi và liệu nó sẵn sàng chấpnhận lĩnh vực xem nó có chunked hay không. TE: deflate
User-Agent Gồm thông tin tài khoản cá nhân nơi gửi yêu cầu. User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)

- Tiêu đề phản hồi máy chủ: chỉ áp dụng cho các thông báo phản hồi.

Accept-Ranges Cho phép máy chủ chỉ định sự chấp nhận phạm vi yêu cầu cho một tài nguyên. Accept-Ranges: bytes
Age Cho phép khoảng thời gian kể từ thời gian gửi đến khi nhận phản hồi được tạo và gửi về từ máy chủ gốc. Age: 24400
ETag Cung cấp giá trị hiện tại của thẻ thực thể cho biến trong yêu cầu. ETag: "xyz"
Location Được sử dụng để chuyển hướng người dùng đến một vị trí khác URL được yêu cầu để hoàn thành yêu cầu. Location: http://webseo360.com/hosting.html
Proxy-Authenticate Bao gồm như một phần của phản hồi 407. Proxy-Authenticate  : challenge
Retry-After Có thể được sử dụng với phản hồi 503 để chỉ ra thời gian dịch vụ dự kiến sẽ không khả dụng với yêu cầu máy khách. Retry-After: 120
Server Bao gồm thông tin về phần mềm được sử dụng bởi máy chủ gốc để xử lý yêu cầu. Server: Apache/2.2.14 (Win32)
Set-Cookie Bao gồm cặp tên/giá trị cho thông tin gửi từ URL cùng với các tùy chọn:
Comment Được sử dụng để gắn với nhận xét liên quan đến cookie.
Domain Xác định tên miền mà cookie hợp lệ.
Expires Chỉ định ngày cookie hết hạn. Nếu trống, cookie sẽ hết hạn khi máy khách thoát khỏi trình duyệt.
Path Xác định tập URL mà cookie áp dụng.
Secure Chỉ định tài khoản sử dụng để trả về cookie dưới dạng kết nối an toàn.
Set-Cookie: name=MaiDucThach; Domain=webseo360.com
Vary Chỉ định thực thể có nhiều tài nguyên và có thể thay đổi theo danh sách tiêu đề của danh sách tiêu để yêu cầu được chỉ định. Vary: Accept-Language, Accept-Encoding
WWW-Authenticate Xác định phải bao gồm yêu cầu thông báo phản hồi 401. Giá trị bao gồm các các thức cho biết lược đồ bác thực và các tham số áp dụng cho URI yêu cầu. WWW-Authenticate: BASIC realm="Admin"

- Tiêu đề thực thể: gồm các trường tiêu đề xác định thông tin phần meta hoặc phần thân của tài nguyên được xác định bởi yêu cầu.

Allow Danh sách các tập phương thức được hỗ trợ bởi tài nguyên được xác định bởi URL yêu cầu. Allow: GET, HEAD, PUT
Content-Encoding Được sử dụng như một sửa đổi kiểu media. Content-Encoding: gzip
Content-Language Xác định ngôn ngữ dự định sử dụng cho thực thể đính kèm.
 
Content-Language: en, vi
Content-Length Kích thước của thực thể phần thân, theo hệ thập phân để gửi đến người nhận hoặc trong phương thức GET, HEAD của kích thước phần thân yêu cầu gửi đi. Content-Length: 12345
Content-Location Cung cấp vị trí tài nguyên thực thể. Content-Location: http://webseo360.com/index.php
Content-MD5 Cung cấp tiêu chuẩn mã hóa MD5 để kiểm tra tính toàn vẹn của thông báo khi nhận. Content-MD5:dgdfhdhetw34t45yhewge
Content-Range Được gửi với một phần thực thể phần thân để xác định nơi nào trong phần thân thực thể mẫu, phần thân phải được áp dụng. Content-Range: byte 1000-2000/5000
Content-Type Phương thức media của thực thể phần thân được gửi đến người nhận hoặc trong trường hợp của phương thức HEAD. Là loại dữ liệu trong thực thể phần thân yêu cầu gửi đi. Content-Type: text/html; charset=utf-8
Expires Xác định ngày giờ phản hồi được xem là cũ. Expires: Thu, 01 Dec 2016 16:00:00 GMT
Last-Modified Xác định ngày giờ mà nguồn máy chủ cho rằng biến thể đó đã được sửa đổi lần cuối. Last-Modified: Thu, 01 Dec 2016 16:00:00 GMT
Phần thông báo phần thân là một tùy chọn cho một thông báo HTTP. Trong trường hợp nó có sẵn, thì nó được sử dụng trong phần Thực thể phần thân liên quan đến yêu cầu hoặc phản hồi. Nếu thực thể phần thân được gắn kết, nó thường được gắn với các tiêu đề  Content-Type và Content-Length. Nội dung của phần thân thường là dữ liệu HTTP yêu cầu (biểu mẫu, tập tin tải lên…) và dữ liệu HTTP phản hồi (tập tin, hình ảnh).

Sử dụng bộ nhớ đệm trong HTTP

HTTP thường được sử dụng cho các hệ thống thông tin phân tán, nơi mà hiệu năng có thể được cải thiện bằng cách sử dụng bộ nhớ cache phản hồi. Phương thức HTTP/1.1 bao gồm các thành phần  nhằm làm mục đích bộ nhớ cache.
Mục tiêu của bộ nhớ đệm trong HTTP/1.1 để loại bỏ yêu cầu gửi trong nhiều trường hợp và để loại bỏ sự cần thiết phải phản hồi đầy đủ trong nhiều trường hợp.
Cơ chế lưu trữ cơ bản trong HTTP/1.1 thông qua chỉ thị Cache-Control để xác định đến các bộ nhớ cache, nơi máy chủ xác định thời gian hết hạn và trình xác nhận hợp lệ.
Tiêu đề Cache-Control cho phép một máy khách  hoặc máy chủ truyền tải một loạt các chỉ thị trong các yêu cầu hoặc phản hồi. Những chỉ thị này thường ghi đè các thuật toán lưu trữ mặc định. Chỉ thị bộ nhớ đệm cache xác định phân cách danh sách bởi dấu phẩy.
- Một máy khách HTTP có thể sử dụng tiêu đề Cache-Control để xác định các tham số cho bộ nhớ cache hoặc để yêu cầu một số loại tài liệu nhất định từ bộ nhớ cache. Chỉ thị bộ nhớ đệm được chỉ định trong danh sách được phân tách bởi dấu phẩy.
no-cache Bộ nhớ cache không được sử dụng để đáp ứng yêu cầu tiếp theo mà không cần gia hạn thành công với máy chủ gốc.
no-store Bộ nhớ cache không lưu trữ bất cứ thông tin nào về yêu cầu của máy khách hoặc phản hồi của máy chủ.
max-age=num Cho biết máy khách sẵn sang chấp nhận phản hồi mà độ tuổi của nó không lớn hơn thời gian quy định tính bằng giây.
max-stale[=num] Cho biết máy khách sẵn sang chấp nhận phản hồi đã vượt qua giới hạn hết hạn.
min-fresh=num Chỉ định máy khách sẵn sàng chấp nhận phản hồi mà tuổi thọ nạp lại không nhỏ hơn độ tuổi hiện tại cộng với thời gian xác định bằng giây.
no-transform Không chuyển đổi thực thể phần thân.
only-if-cached Không lấy dữ liệu mới. Bộ nhớ cache chỉ có thể gửi tài liệu nếu nó nằm trong bộ nhớ cache và không liên kết đến máy chủ gốc để xem bản sao mới có tồn tại hay không.
- Các chỉ thị phản hồi bộ nhớ cache có thể được sử dụng bởi máy chủ trong phản hồi HTTP.
public Cho biết phản hồi có thể được cache bởi bất kỳ bộ nhớ cache nào.
private Cho biết tất cả hoặc một phần thông báo phản hồi danh cho một người dùng và không được lưu trữ trong bộ nhớ cache chia sẻ.
no-cache Bộ nhớ cache không được sử dụng để phản hồi đáp ứng yêu cầu tiếp theo mà mà không cần xác nhận thành công với máy chủ gốc.
no-store Bộ nhớ cache không sử dụng bất cứ lưu trữ nào trong yêu cầu từ máy khách hoặc phản hồi máy chủ.
no-transform Không chuyển đổi thực thể nội dung.
must-revalidate Bộ nhớ cache phải xác minh tình trạng của tài liệu cũ trước khi sử dụng nó và các tệp hết hạn sẽ không được sử dụng.
proxy-revalidate Có cùng ý nghĩa như must-revalidate, ngoại trừ nó không áp dụng cho các bộ nhớ người dùng không chia sẻ lưu trữ.
max-age =num Cho biết máy khách sẵn sàng chấp nhận phản hồi mà độ tuổi của chúng không lớn hơn thời gian quy định tính bằng giây.
s-maxage =num Độ tuổi tối đa được chỉ định bởi chỉ thị này sẽ ghi đè độ tuổi tối đa được chỉ định bởi chỉ thị  max-age hoặc tiêu đề Expires. Chỉ thị này luôn bỏ qua bởi một bộ nhớ cache private.