最近有个Laravel项目,为了提高访问速度,做了全站的静态化,参考了《Laravel页面静态化最佳实践》这篇文章配置代码和nginx。
但是遇到一个问题,Laravel框架自带的分页链接,采用的是url后缀带上page=xx这样的方式,采用上述方式做静态化不是太理想。于是需要另外的方案。
其实很简单,直接用笨方法,截取page=xx参数的值,将它保存成为xx.html文件,每次程序首先判断文件是否存在,存在则直接读取调用,不存在的话就渲染这个页面,显示并保存html。
$page = intval($request->input('page', 1));
$path = 'pages/'.$page.'.html'; //分页缓存放到pages目录下
if (Storage::disk('local')->exists($path)) {
return Storage::disk('local')->get($path); //有缓存则显示缓存
}
//没有缓存的话就直接渲染到屏幕,并写入缓存
$view = view('test');
Storage::disk('local')->put($path, $view->render());
return $view;