kirksfletcher / pagespeed
Laravel渲染视图的自动视图优化和缓存系统
0.3.3
2019-05-12 19:47 UTC
README
Pagespeed是一个简单的包,可以将过滤器应用于视图输出,例如删除空白和注释(更多功能即将推出)。好处是相当显著的页面速度提升,如果你想在Google的Pagespeed Insights中获得更高的分数,这将非常有用,并且对于提供流畅的用户体验来说更好。
除了应用选定的过滤器外,渲染的视图还使用你在Laravel中设置的缓存配置进行缓存(我推荐使用memcached)。这允许页面快速渲染和交付。
显然,这对于主页、联系我们等静态页面是好的,但这将防止使用动态内容的页面。然而,如果用户已登录,该包将跳过服务缓存页面,并提供动态页面(仍然应用过滤器)。
安装
composer require kirksfletcher/pagespeed
使用很简单
虽然你可以自由选择自己的实现方法,但这里是我喜欢使用的方法。
在你的主要Controller.php中实例化Pagespeed类,并选择所需的过滤器。
<?php
namespace App\Http\Controllers;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use kirksfletcher\pagespeed\Pagespeed;
class Controller extends BaseController
{
use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
protected $pagespeed;
public function __construct()
{
$this->pagespeed = new Pagespeed();
$this->pagespeed->plugin('trimWhiteSpace', true);
$this->pagespeed->plugin('removeComments', true);
}
}
现在在你的任何一个控制器中渲染你的视图如下。
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class test extends Controller
{
public function test(){
$pageData = [
'title' => 'This is my page title'
];
return $this->pagespeed->view('welcome', $pageData, '/test');
}
}
main->view函数接受3个参数
- 第一个是必需的,是视图本身(使用方式与在Laravel中调用视图相同)
- 第二个是可选的,是你希望发送到视图的数据
- 第三个也是可选的,是页面URL(slug),你可能有一个函数渲染不同的页面,这允许根据slug创建不同的缓存,另一个用途是能够在这里对页面数据进行md5处理,以确保页面是根据动态内容缓存的(如果变体有限,这可能很有用,但如果每个请求都不同,可能不那么有用)。如果没有传递slug,则将使用视图名称用于缓存目的。
其他有用的命令
$this->pagespeed->killCacheView(VIEW_NAME_OR_SLUG);
上面的命令非常明显,将清除所选处理的视图的缓存。
$this->pagespeed->plugin('removeComments', BOOL);
上面的命令可以在任何时候调用(通常最好在实例化后立即调用)。这将将在构建缓存的渲染视图时应用选定的过滤器。
$this->pagespeed->allowDynamicContent(BOOL);
上面的命令将允许动态页面内容,但将创建更多的缓存。如果传递给视图的数据有任何不同,将生成新的缓存。所有变体都将保留在缓存中,并在数据、视图和slug匹配时发送。
可用的插件
(正在开发更多插件)