Caching is an essential technique for improving network connection performance by minimizing data transfer. Retrieving large and expensive resources can significantly impact both time and cost, especially on mobile devices. The HTTP protocol provides various caching strategies that browsers utilize to enhance user experience.

1. No Caching

The Cache-Control header offers options to control caching behavior. By specifying no-cache, the browser will always check the ETag value (explained later) before utilizing a cached version of a resource.

Example:

Cache-Control: no-cache

For an even stricter caching policy, the no-store option instructs the browser and intermediary network devices to not store the resource in their caches.

Example:

Cache-Control: no-store

To define the cache validity of a resource, the Cache-Control header can use the max-age value, indicating the number of seconds the resource remains valid in the cache.

Example:

Cache-Control: max-age=3600

2. The Expires Header

When an HTTP request is sent, the browser checks its cache for a copy of the requested page. It then determines the freshness of the page. A page is considered fresh if the HTTP response Expires header value is earlier than the current datetime.

Example:

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

3. Conditional GET

Conditional GET enables more sophisticated caching strategies by utilizing specific request headers. There are two primary methods for performing a conditional get:

a. Using If-Modified-Since and Last-Modified

The browser includes an If-Modified-Since header in the request, which is derived from the Last-Modified header value received from the currently cached page. This header informs the server to provide a response body (page content) only if the resource has been modified since the specified date. Otherwise, the server responds with a 304 Not Modified response.

b. Using If-None-Match and ETag

The web server may send an ETag header, which serves as the identifier for a resource. Whenever the resource is updated, the ETag should also change, similar to a checksum. The browser includes an If-None-Match header containing one or more ETag values. If none of the ETags match, the server returns the fresh version of the resource. Otherwise, a 304 Not Modified response is sent.

By understanding and utilizing these caching options, you can optimize your network connections and improve overall performance.

Tags: HTTP caching, Cache-Control, Expires header, Conditional GET, If-Modified-Since, Last-Modified, If-None-Match, ETag