Simple and easy varnish integration in Laravel
This package offers easy ways to integrate your Laravel application with Varnish Cache.
Install the package via Composer :
$ composer require richan-fongdasen/laravel-varnishable
Laravel version | Varnishable version |
---|---|
5.1.x - 5.4.x | 0.x |
5.5.x - 5.8.x | 1.0.x - 1.1.x |
6.x | 1.2.x |
7.x | 1.3.x |
8.x | ^1.4.x |
9.x | 2.0.x |
10.x | 2.1.x |
11.x | 2.2.x |
If you are using Laravel version 5.5+ then you can skip registering the service provider in your Laravel application.
Add the package service provider in your config/app.php
'providers' => [
// ...
RichanFongdasen\Varnishable\ServiceProvider::class,
];
Add the package's alias in your config/app.php
'aliases' => [
// ...
'Varnishable' => RichanFongdasen\Varnishable\Facade::class,
];
Publish the package asset files using this php artisan
command
$ php artisan vendor:publish --provider="RichanFongdasen\Varnishable\ServiceProvider"
The command above would create new varnishable.php
file in your application's config directory.
return [
/*
|--------------------------------------------------------------------------
| Varnish hosts
|--------------------------------------------------------------------------
|
| Specify the hostnames of your varnish instances. You can use array
| to specify multiple varnish instances.
|
*/
'varnish_hosts' => env('VARNISH_HOST', '127.0.0.1'),
/*
|--------------------------------------------------------------------------
| Varnish port
|--------------------------------------------------------------------------
|
| Specify the port number that your varnish instances are listening to.
|
*/
'varnish_port' => env('VARNISH_PORT', 6081),
/*
|--------------------------------------------------------------------------
| Cache duration
|--------------------------------------------------------------------------
|
| Specify the default varnish cache duration in minutes.
|
*/
'cache_duration' => env('VARNISH_DURATION', 60 * 24),
/*
|--------------------------------------------------------------------------
| Cacheable header
|--------------------------------------------------------------------------
|
| Specify the custom HTTP header that we should add, so Varnish can
| recognize any responses containing the header and cache them.
|
*/
'cacheable_header' => 'X-Varnish-Cacheable',
/*
|--------------------------------------------------------------------------
| Uncacheable header
|--------------------------------------------------------------------------
|
| Specify the custom HTTP header that we should add, so Varnish won't
| cache any reponses containing this header.
|
*/
'uncacheable_header' => 'X-Varnish-Uncacheable',
/*
|--------------------------------------------------------------------------
| Use ETag Header
|--------------------------------------------------------------------------
|
| Please specify if you want to use ETag header for any of your static
| contents.
|
*/
'use_etag' => true,
/*
|--------------------------------------------------------------------------
| Use Last-Modified Header
|--------------------------------------------------------------------------
|
| Please specify if you want to use Last-Modified header for any of your
| static contents.
|
*/
'use_last_modified' => true,
/*
|--------------------------------------------------------------------------
| ESI capability header
|--------------------------------------------------------------------------
|
| Please specify the ESI capability header that the varnish server would
| send if there is any ESI support.
|
*/
'esi_capability_header' => 'Surrogate-Capability',
/*
|--------------------------------------------------------------------------
| ESI reply header
|--------------------------------------------------------------------------
|
| Please specify the HTTP header that you want to send as a reply
| in response to ESI capability header which the varnish server sent in
| current request.
|
*/
'esi_reply_header' => 'Surrogate-Control',
];
This section is currently under construction.
- spatie/laravel-varnish - Some concepts in this repository was inspired by this package.
The MIT License (MIT). Please see License File for more information.