schickling / laravel-cash
使用 memcached 和 nginx 为您的 laravel 应用提供简单易用的缓存层。
0.3.1
2014-01-15 12:24 UTC
Requires
Requires (Dev)
- laravel/framework: 4.1.*
- mockery/mockery: dev-master
- orchestra/testbench: 2.1.*
- satooshi/php-coveralls: 0.6.*
This package is not auto-updated.
Last update: 2024-09-24 02:44:14 UTC
README
使用 memcached 和 nginx 为您的 laravel 应用提供简单易用的缓存层。响应时间提高约 400%。
工作原理
该软件包使用 URL 作为键,在 memcached 中缓存对 GET 请求的响应。后续请求将由 nginx 直接提供缓存内容,无需运行 PHP。写入操作可以轻松使缓存失效。
特性
- 易于设置和使用
- 自定义失效规则
- 自动缓存填充
- 缓存预热
依赖项
快速设置
-
将以下内容添加到您的 composer.json 文件中,并运行
composer update{ "require": { "schickling/laravel-cash": "dev-master" } } -
将
Schickling\Cash\CashServiceProvider添加到您的 config/app.php 文件中 -
调整您的 nginx vhost (更多配置)
upstream memcached { server 127.0.0.1:11211; keepalive 1024; } upstream laravel { server 127.0.0.1:9999; } server { listen *:80; server_name myapp.dev; root /path/to/your/public; index index.php; rewrite ^/(.*)$ /index.php?/$1 last; location ~ \.php$ { default_type "application/json"; if ($request_method = GET) { set $memcached_key laravel:$request_uri; memcached_pass laravel; error_page 404 502 = @nocache; } if ($request_method != GET) { fastcgi_pass laravel; } } location @nocache { fastcgi_pass laravel; } }
使用方法
为路由添加缓存过滤器
将 'after' => 'cash' 过滤器添加到您希望缓存的 GET 路由中。也适用于路由组。
Route::get('users', array('after' => 'cash', function() { return User::all(); }));
定义失效规则
在您的 routes.php 文件中添加以下语法的规则。$routeToInvalidate 参数可以是字符串或数组,并始终描述 GET 路由。
Cash::rule($httpMethod, $triggerRoute, $routesToInvalidate);
假设您有一个缓存的 GET users 路由来获取所有用户,以及一个 POST users 路由来创建新用户。您的目标是当创建新用户时使 GET users 缓存失效。
Cash::rule('POST', 'users', 'users');
多个路由缓存
Cash::rule('POST', 'users', array('users', 'premium/users'));
动态规则
动态触发路由
Cash::rule('POST', 'users/.*/photos', 'photos');
动态失效路由
Cash::rule('POST', 'photos', 'photos/*');
清除缓存
简单地重启 memcached。
即将推出(请通过 pull request 贡献)
- 支持命名路由
- 支持路由组作用域中的规则
- 更精确的层次结构失效
- Apache 支持
- Memcache 支持
- 缓存预热
- 单独的缓存预热