Web cache là một thực thể mạng được tạo ra nhằm mục đích thay thế web server để đáp ứng các HTTP request. Web cache có một không gian lưu trữ riêng và chứa các bản sao của các đối tượng được request. Ta gọi server chịu trách nhiệm cho việc lưu trữ các bản sao là caching server. Các caching server thường là các proxy server và được cài đặt bởi ISP.

Như minh họa dưới đây, trình duyệt của người dùng có thể được thiết lập sao cho tất cả các HTTP request sẽ được điều hướng đến caching server trước khi đến web server.

Giả sử chúng ta cần request trang web www.example.com. Quá trình sẽ diễn ra như sau:

  1. Browser mở một kết nối TCP đến proxy server và gửi đi HTTP request.
  2. Proxy server sẽ kiểm tra xem bản sao của trang www.example.com có được lưu ở bộ nhớ của nó không, nếu có, nó sẽ gửi lại HTTP response cho client. Ta gọi trường hợp này là cache hit.
  3. Nếu proxy server không có đối tượng cần request, mà ở đây là trang www.example.com. Nó sẽ mở một kết nối TCP đến server gốc và thực hiện request – response cho đối tượng mà người dùng cần. Ta gọi trường hợp này là cache miss.
  4. Khi proxy server nhận được HTTP response từ server, nó sẽ lưu ở đó một bản và gửi bản sao đến trình duyệt của người dùng.

Như vậy, proxy server vừa là client vừa là server.

Advantages

Lợi ích của việc lưu trữ bản sao của đối tượng là giảm thiểu được thời gian response cho các request của client, đặc biệt là khi throughput giữa client và proxy server nhanh hơn throughput giữa client và server. Đồng thời, web cache còn làm giảm sự tắc nghẽn của đường truyền đến server.

Proxy server còn có một ứng dụng là cho phép hoặc không cho phép các request được đi tới server. Ví dụ, proxy server của công ty có thể chặn các request vào Twitter của các nhân viên trong giờ làm việc. Ngược lại, nó cũng có thể bảo vệ các máy bên trong công ty khỏi sự xâm nhập trái phép của các máy bên ngoài bằng cách sử dụng tường lửa.

Disadvantages

Các bản sao của các đối tượng lưu ở proxy server có thể bị cũ, vì vậy mà web caching chỉ có thời gian lưu trữ ngắn hạn (mỗi đối tượng đều có thông số TTL (Time To Live) cho biết thời gian tồn tại) và cần phải được cập nhật khi có request mới.

Nếu phản hồi của server mang tính cá nhân hóa, proxy server sẽ không thể cache lại phản hồi của server. Vì mỗi phản hồi của mỗi người dùng là khác nhau. Ví dụ, trang tin Facebook của mỗi người sẽ luôn khác nhau dựa trên thói quen và hành vi sử dụng Facebook của họ.