Download the PHP package codewiser/http-cache-control without Composer
On this page you can find all versions of the php package codewiser/http-cache-control. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download codewiser/http-cache-control
More information about codewiser/http-cache-control
Files in codewiser/http-cache-control
Package http-cache-control
Short Description Http Cache Control layer for Laravel
License MIT
Informations about the package http-cache-control
HTTP Cache-Control for Laravel
This package provides solution to work with HTTP Cache-Control headers. Resources are cached and then invalidates on Eloquent events. Server may respond without making database requests, just using cache values.
Prepare models
CacheControl
uses cache to keep headers values. Then model is changed the
associated cache must be invalidated.
The models must implement \Codewiser\HttpCacheControl\Contracts\Cacheable
.
Here is example of implementation. Classes share cache tag, so changing any Model invalidates shared cache.
Usage
CacheControl
class analyzes request headers and creates response with proper
headers.
First argument must be a \Psr\SimpleCache\CacheInterface
,
or \Codewiser\HttpCacheControl\Contracts\Cacheable
, or classname of a Model,
that implements that interface.
Second argument is a callback, that should return response content. This callback would be called only if necessary.
Cache-Control
header
You may set any Cache-Control
directives you like:
If no
public
orprivate
directives was not set, it would beprivate
by default.Nothing would be cached on server in this case.
Expires
header
Or you may set only Expires
header:
Nothing would be cached on server in this case.
Caching entire response
You may want to cache entire response:
Use with care. Note, that cache may become huge.
Private Cache
If controller response must not be shared across users, you should
set Cache-Control: private
directive.
Vary
header
Vary
headers describes a list of request headers, that matters for caching.
For example, your application supports different languages, so cache depends
on Accept-Language
request header:
Note, that web-server may append more Vary headers values. It is
Accept-Encoding
as usual.
Conditional headers
Controller may respond with ETag
and/or Last-Modified
header, so the next
request may bring If-None-Match
or If-Modified-Since
headers, that makes it
conditional.
In this example local cache stores only ETag
value. That would be enough to
check future requests with If-None-Match
.
This way is the most cache careful.