Laravel 缓存package
有时候由于某些特殊原因,想把整个网站缓存下来为静态html。nginx虽然也可以搞,不过我还是喜欢用php来解决。搜索了一下,发现此package

有时候由于某些特殊原因,想把整个网站缓存下来为静态html。nginx虽然也可以搞,不过我还是喜欢用php来解决。搜索了一下,发现此package
https://github.com/Anahkiasen/flatten
安装方法详见github。
publish config之后。有几个配置要填。
<?php return array(
// 总开关,是否开启缓存,不过我测试了好像不管用。无论设置未false还是true都会开启缓存。
'enabled' => TRUE,
// 忽略配置,比如'users',就将会忽略所有‘/users*’路径的页面缓存
'ignore' => array('user'),
// 特定缓存配置,比如下面的示例就将只缓存'/galleries*'和'/categories*'页面
'only' => array('galleries', 'categories'),
// 特定缓存条件,当条件为true的时候缓存。比如如下的配置,当用户为游客的时候开启缓存。
'blockers' => array(Auth::guest()),
//缓存有效时间(分钟),如下设置为10分钟
'lifetime' => 10,
// An array of string or variables to add to the salt being used
// to differentiate pages
// 我也不太清楚,求大神解释
'saltshaker' => array(),
);
当这个配置完毕之后缓存系统就生效了。这时候你再去访问你要缓存的页面,刷新两次,查看源码就会发现最底下有一行缓存信息。
<!-- cached on 2014-11-10 22:17:11 -->
表示当前页面为直接读取的缓存html。
手动重置缓存
有时候需要对页面进行手动重置缓存,比如用户更新了资料,则需要重置一下用户详情页面的缓存。可以使用的方法有如下:
// Manual flushing
Flatten::flushAll();//重置所有的缓存
Flatten::flushPattern('users/.+');//重置匹配路径页面的缓存
Flatten::flushUrl('http://localhost/users/taylorotwell');//重置特定路径页面的缓存
// 使用路由方式和控制器方式重置路由
Flatten::flushRoute('user', 'taylorotwell');
Flatten::flushAction('UsersController@user', 'taylorotwell');
// 重置section部分的缓存。这个下面会详细说明
Flatten::flushSection('articles');
section部分的缓存
<h1>这一部分将不会缓存</h1>
<?php foreach ($articles as $article): ?>
<?= $article->name ?>
<?php endforeach; ?>
<h1>下面这部分section将会被缓存</h1>
<?php Flatten::section('articles', function () use ($articles) { ?>
<?php foreach ($articles as $article): ?>
<?= $article->name ?>
<?php endforeach; ?>
<?php }); ?>
section部分缓存的blade方式
<h1>这一部分将不会缓存</h1>
@foreach($articles as $articles)
{{ $article->name }}
@endforeach
<h1>下面这部分section将会被缓存10分钟</h1>
@cache('articles', 10)
@foreach($articles as $article)
{{ $article->name }}
@endforeach
@endcache
Kickstarting
Flatten还有一个Kickstarting功能。具体未研究。有待大神指教。