Laravel ETag and Conditionals is a package that provides a set of middleware for ETags and HTTP conditional requests. The goal of this package is to provide tools for better client-side caching for Laravel apps.
Using the techniques supported by this middleware, browsers can handle the caching provided automatically based on
ETag headers in HTTP responses.
At the heart of this package, the
setEtag middleware will set the ETag header on responses. The value of this header is the MD5 hash of the content. This package also supports HEAD requests (see the readme for details).
HTTP Conditional Requests
This package's middleware currently supports two HTTP Conditional requests:
If-None-Matched. To give a high-level understanding of how this can be useful to your app, when the
If-None-Match header in the request matches the
Etag, then a
304 response is returned, and the browser will use cached content instead. If the
If-None-Match header doesn't match the newly created
ETag value, then a
200 response is returned. This applies to
HEAD requests only.
You can learn more about this package, get full installation instructions, and view the source code on GitHub. It's also advisable to learn more about the ETag header and HTTP conditional requests to understand how the HTTP specification works to support browser caching.
The author of the package also wrote an article that explains how to write the middleware in this package: Caching your Laravel API with ETag and Conditional Requests.