Download the PHP package spatie/laravel-responsecache without Composer

On this page you can find all versions of the php package spatie/laravel-responsecache. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package laravel-responsecache

Speed up an app by caching the entire response

Latest Version on Packagist Tests Total Downloads

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.

Are you a visual learner? Then watch this video that covers how you can use laravel-responsecache and how it works under the hood.

Support us

We invest a lot of resources into creating best in class open source packages. You can support us by buying one of our paid products.

We highly appreciate you sending us a postcard from your hometown, mentioning which of our package(s) you are using. You'll find our address on our contact page. We publish all received postcards on our virtual postcard wall.

Installation

If you're using PHP 7, install v6.x of this package.

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 \Spatie\ResponseCache\Middlewares\CacheResponse::class and \Spatie\ResponseCache\Middlewares\DoNotCacheResponse.

For laravel 11.x and newer:

Add the middleware definitions to the bootstrap app.

For laravel 10.x and earlier:

Add the middleware definitions to 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 ResponseCacheServiceProvider 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 URIs

You can forget specific URIs with:

The ResponseCache::forget method only works when you're not using a cacheNameSuffix in your cache profile, use ResponseCache::selectCachedItems to deal with cacheNameSuffix.

Forgetting a selection of cached items

You can use ResponseCache::selectCachedItems() to specify which cached items should be forgotten.

The cacheNameSuffix depends by your cache profile, by default is the user ID or an empty string if not authenticated.

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 our route could be exempt from being cached.

Alternatively, you can add the middleware to a controller:

Purposefully bypassing the cache

It's possible to purposefully and securely bypass the cache and ensure you always receive a fresh response. This may be useful in case you want to profile some endpoint or in case you need to debug a response. In any case, all you need to do is fill the CACHE_BYPASS_HEADER_NAME and CACHE_BYPASS_HEADER_VALUE environment variables and then use that custom header when performing the requests.

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 Spatie\ResponseCache\CacheProfiles\CacheAllSuccessfulGetRequests.

You can create your own cache profile class by implementing the Spatie\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 the '/test3' and '/test4' routes above:

In contrast, this statement would remove only the '/test2' 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

Spatie\ResponseCache\Events\ResponseCacheHit

This event is fired when a request passes through the ResponseCache middleware and a cached response was found and returned.

CacheMissed

Spatie\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

Spatie\ResponseCache\Events\ClearingResponseCache

Spatie\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 Spatie\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 Spatie\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 Spatie\ResponseCache\Serializers\Serializer can be used. This is how that interface looks like:

Testing

You can run the tests with:

Alternatives

Changelog

Please see CHANGELOG for more information what has changed recently.

Contributing

Please see CONTRIBUTING for details.

Security

If you've found a bug regarding security please mail [email protected] instead of using the issue tracker.

Credits

And a special thanks to Caneco for the logo ✨

License

The MIT License (MIT). Please see License File for more information.


All versions of laravel-responsecache with dependencies

PHP Build Version
Package Version
Requires php Version ^8.2
illuminate/cache Version ^10.0|^11.0
illuminate/container Version ^10.0|^11.0
illuminate/console Version ^10.0|^11.0
illuminate/http Version ^10.0|^11.0
illuminate/support Version ^10.0|^11.0
nesbot/carbon Version ^2.63|^3.0
spatie/laravel-package-tools Version ^1.9
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package spatie/laravel-responsecache contains the following files

Loading the files please wait ....