Download the PHP package stroker/cache without Composer
On this page you can find all versions of the php package stroker/cache. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download stroker/cache
More information about stroker/cache
Files in stroker/cache
Package cache
Short Description Provides a full page cache solution for ZF2
License MIT
Homepage https://github.com/bramstroker/zf2-fullpage-cache
Informations about the package cache
StrokerCache
This module provides a full page cache solution for Laminas.
Installation
Installation of StrokerCache uses composer. For composer documentation, please refer to getcomposer.org.
cd my/project/directory
-
create or modify the
composer.json
file within your ZF2 application file with following contents: - install composer via
curl -s https://getcomposer.org/installer | php
(on windows, download https://getcomposer.org/installer and execute it with PHP). Then runphp composer.phar install
- open
my/project/directory/configs/application.config.php
and add the following key to yourmodules
:
Setup cache rules
Copy the file strokercache.local.php.dist
to your config/autoload directory and rename to strokercache.local.php
. Edit this file to reflect your needs.
The module provides several strategies to determine if a page should be cached.
- By routename
- By controller classname
- By regex on the URI
- Disable caching for authenticated users
Examples
Caching the home route:
Caching the foo/bar
route, but only for a GET request and only when the param id
equals 60
Change storage adapter
Storage adapter can be changed by configuration. Configuration structure is the same a StorageFactory consumes. See the Laminas reference guide. By default filesystem storage is used.
Example using APC:
TTL
You can set the TTL (Time to live) for the cache items by specifying the option on the storage adapter configuration. Not all Laminas storage adapters support TTL, which also is the reason why StrokerCache doesn't support per item TTL at the moment.
Clearing the cache
You can invalidate cache items using the provided console route.
Alternatively you could pull strokercache_service
from the servicelocator and call clearByTags
directly from your application (i.e. from an event listener).
Run the following command from your project root:
php public/index.php strokercache clear <tags>
Multiple tags can be seperated by a ,
.
Every page which is cached by StrokerCache is identified using the following tags:
route_<routename>
: Contains the matched routename of the pagecontroller_<controllername>
: Contains the controllernameparam_<paramname>_<paramvalue>
: One tag for every route param
To clear every page renderered by the someAction
in MyNamespace\MyController
do the following:
php public/index.php strokercache clear controller_MyNamespace\MyController,param_action:some
To clear the route with alias player
but only for the player with id 60.
php public/index.php strokercache clear route_player,param_id_60
Custom id generators
You can create your own id generator by implementing the StrokerCache\IdGenerator\IdGeneratorInterface. Now register your generator to the PluginManager:
Custom strategies
You can create your own strategies by implementing the StrokerCache\Strategy\StrategyInterface. Now register your strategy to the pluginManager:
Next you need to enable the strategy
Disable FPC
You can disable the Caching solution all together by using the following configuration. This comes in handy on your development environment where you obviously don't want any caching to happen.
Events
The cache service triggers several events you can utilize to add some custom logic whenever saving/loading the cache happens. The events are listed as constants in the CacheEvent class:
EVENT_LOAD
: triggered when the requested page is found in the cache and ready to be served to the clientEVENT_SAVE
: triggered when your page is stored in the cache storageEVENT_SHOULDCACHE
: this event is used to determine if a page should be stored into the cache. You can listen to this event if you don't want the page to be cached. All the strategies are attached to this event as well.
Examples
Setting custom tags example
Log to file whenever a page is written to the cache storage
Say we want to disable caching for all requests on port 8080, we can simply listen to the SHOULDCACHE
event and return false
.
Keep in mind you want to prevent other listeners from executing using stopPropagation()
. If you don't do this other listeners will be executed and whenever one of them returns true
the page will be cached.
Also you need to attach the listener at a higher priority (1000
in this example) than the buildin strategies (they are registered at priority 100
).
If you want to avoide caching because, for instance, the user is authenticated, do the same as above, but listen on LOAD
instead of SHOULDCACHE
:
Attention: Be aware, that you should probably disable storing for authenticated users as well:
Store directly to HTML files for max performance
This is still a bit expirimental. Please see this issue for some pointers how to get this working.
All versions of cache with dependencies
zendframework/zend-modulemanager Version ^2.7
zendframework/zend-eventmanager Version ^3.1
zendframework/zend-servicemanager Version ^3.2
zendframework/zend-http Version ^2.6
zendframework/zend-mvc Version ^3.0
zendframework/zend-cache Version ^2.7
zendframework/zend-console Version ^2.6
zendframework/zend-mvc-console Version ^1.1