https://github.com/there4/slim-stash-middleware
Slim Stash Cache Middleware
https://github.com/there4/slim-stash-middleware
Last synced: about 1 year ago
JSON representation
Slim Stash Cache Middleware
- Host: GitHub
- URL: https://github.com/there4/slim-stash-middleware
- Owner: there4
- License: mit
- Created: 2014-10-21T23:06:37.000Z (over 11 years ago)
- Default Branch: master
- Last Pushed: 2014-11-22T23:41:52.000Z (over 11 years ago)
- Last Synced: 2025-04-14T02:14:24.767Z (about 1 year ago)
- Language: PHP
- Size: 195 KB
- Stars: 9
- Watchers: 14
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
Slim Stash Cache Middleware [](https://travis-ci.org/there4/slim-stash-middleware)
================================================================================
> Caching middleware layer for Slim using Stash
## About
A simple middleware layer for Slim that provides a caching mechanism for
endpoints.
## Example Setup
Here is an example of the middleware setup. It's using a config setting to
enable the cache.
```php
container->singleton('stash', function () use ($app) {
if (!is_dir($app->config('caches.path'))) {
mkdir($app->config('caches.path'), 0777, true);
}
$stashFileSystem = new \Stash\Driver\FileSystem(array(
'path' => $app->config('caches.path')
));
return new \Stash\Pool($stashFileSystem);
});
if ($app->config('enable_cache')) {
$app->add(new \There4\Slim\Middleware\StashCache($app->stash));
}
```
And an endpoint that uses the cache:
```php
get('/', function () use ($app) {
$app->response->allowCache = true;
$app->response->cacheExpiration = 3600;
$app->render('index.html');
});
// User Profile Page
// -----------------------------------------------------------------------------
// This would need to be coupled with a cache invalidation on a user change
$app->get('/profile', function () use ($app) {
$user = $app->currentUser;
$app->response->allowCache = true;
$app->response->cacheExpiration = 3600;
$app->response->signature = 'userProfile' . $user->id;
$app->render('index.html');
});
```
## Quick API Reference
* __$app->response->allowCache__ `bool` enable caching
* __$app->response->cacheExpiration__ `int` seconds to hold data in cache;
* __$app->response->signature__ `mixed` leave unset for automatic url based. String for simple signature. Callback function will be executed. Array in `call_user_func` format is acceptable as well.
## TODO
* Cache warming script
* Tests