Download the PHP package codeat3/laravel-responsecache-php72 without Composer
On this page you can find all versions of the php package codeat3/laravel-responsecache-php72. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download codeat3/laravel-responsecache-php72
More information about codeat3/laravel-responsecache-php72
Files in codeat3/laravel-responsecache-php72
Package laravel-responsecache-php72
Short Description Spatie's laravel-responsecache forked version for php 7.2. Speed up a Laravel application by caching the entire response
License MIT
Homepage https://github.com/codeat3/laravel-responsecache
Informations about the package laravel-responsecache-php72
Spatie's laravel-responsecache fork for php 7.2. Speed up an app by caching the entire response
This is the forked version of spatie's wonderful package laravel-responsecache, but compatible with PHP 7.2.
This Laravel package can cache an entire response. By default it will cache all successful get-requests that return text based content (such as html and json) for a week. This could potentially speed up the response quite considerably.
So the first time a request comes in the package will save the response before sending it to the users. When the same request comes in again we're not going through the entire application but just respond with the saved response.
Spatie is a webdesign agency in Antwerp, Belgium. You'll find an overview of all their open source projects on their website.
Installation
You can install the package via composer:
The package will automatically register itself.
You can publish the config file with:
This is the contents of the published config file:
And finally you should install the provided middlewares \Codeat3\ResponseCache\Middlewares\CacheResponse::class
and \Codeat3\ResponseCache\Middlewares\DoNotCacheResponse
in the http kernel.
Usage
Basic usage
By default, the package will cache all successful get
-requests for a week.
Logged in users will each have their own separate cache. If this behaviour is what you
need, you're done: installing the ResponseCacheServerProvider
was enough.
Clearing the cache
Manually
The entire cache can be cleared with:
This will clear everything from the cache store specified in the config-file.
Using a console command
The same can be accomplished by issuing this artisan command:
Using model events
You can leverage model events to clear the cache whenever a model is saved or deleted. Here's an example.
Forget one or several specific URI(s)
You can forget specific URIs with:
The forget
method only works when you're not using a cacheNameSuffix
in your cache profile.
Preventing a request from being cached
Requests can be ignored by using the doNotCacheResponse
-middleware.
This middleware can be assigned to routes and controllers.
Using the middleware are route could be exempt from being cached.
Alternatively, you can add the middleware to a controller:
Creating a custom cache profile
To determine which requests should be cached, and for how long, a cache profile class is used.
The default class that handles these questions is Codeat3\ResponseCache\CacheProfiles\CacheAllSuccessfulGetRequests
.
You can create your own cache profile class by implementing the Codeat3\ResponseCache\CacheProfiles\CacheProfile
-interface. Let's take a look at the interface:
Caching specific routes
Instead of registering the cacheResponse
middleware globally, you can also register it as route middleware.
When using the route middleware you can specify the number of seconds these routes should be cached:
Using tags
If the cache driver you configured supports tags, you can specify a list of tags when applying the middleware.
Clearing tagged content
You can clear responses which are assigned a tag or list of tags. For example, this statement would remove all routes specified above:
In contrast, this statement would remove all of the routes except the '/test1'
route:
Note that this uses Laravel's built in cache tags functionality, meaning routes can also be cleared in the usual way:
Events
There are several events you can use to monitor and debug response caching in your application.
ResponseCacheHit
Codeat3\ResponseCache\Events\ResponseCacheHit
This event is fired when a request passes through the ResponseCache
middleware and a cached response was found and returned.
CacheMissed
Codeat3\ResponseCache\Events\CacheMissed
This event is fired when a request passes through the ResponseCache
middleware but no cached response was found or returned.
ClearingResponseCache and ClearedResponseCache
Codeat3\ResponseCache\Events\ClearingResponseCache
Codeat3\ResponseCache\Events\ClearedResponseCache
These events are fired respectively when the responsecache:clear
is started and finished.
Creating a Replacer
To replace cached content by dynamic content, you can create a replacer.
By default we add a CsrfTokenReplacer
in the config file.
You can create your own replacers by implementing the Codeat3\ResponseCache\Replacers\Replacer
-interface. Let's take a look at the interface:
Afterwards you can define your replacer in the responsecache.php
config file:
Customizing the serializer
A serializer is responsible from serializing a response so it can be stored in the cache. It is also responsible for rebuilding the response from the cache.
The default serializer Codeat3\ResponseCache\Serializer\DefaultSerializer
will just work in most cases.
If you have some special serialization needs you can specify a custom serializer in the serializer
key of the config file. Any class that implements Codeat3\ResponseCache\Serializers\Serializer
can be used. This is how that interface looks like:
Changelog
Please see CHANGELOG for more information what has changed recently.
Testing
You can run the tests with:
Alternatives
- Barry Vd. Heuvel made a package that caches responses by leveraging HttpCache.
- Joseph Silber created Laravel Page Cache that can write it's cache to disk and let Nginx read them, so PHP doesn't even have to start up anymore.
Contributing
Please see CONTRIBUTING for details.
Security
If you discover any security related issues, please email [email protected], [email protected] instead of using the issue tracker.
Postcardware
You're free to use this package, but if it makes it to your production environment we highly appreciate you send spatie a postcard from your hometown, mentioning which of spatie package(s) you are using.
Spatie address is: Spatie, Samberstraat 69D, 2060 Antwerp, Belgium.
Spatie publishes all received postcards on spatie's company website.
Credits
- Freek Van der Herten
- All Contributors
Support spatie
Spatie is a webdesign agency based in Antwerp, Belgium. You'll find an overview of all their open source projects on their website.
Does your business depend on their contributions? Reach out and support them on Patreon. All pledges will be dedicated to allocating workforce on maintenance and new awesome stuff.
License
The MIT License (MIT). Please see License File for more information.
All versions of laravel-responsecache-php72 with dependencies
laravel/framework Version ~5.7.0|~5.8.0|^6.0|^7.0
nesbot/carbon Version ~1.19 || ^2.0