kirksfletcher/pagespeed

Laravel渲染视图的自动视图优化和缓存系统

0.3.3 2019-05-12 19:47 UTC

This package is auto-updated.

Last update: 2024-09-13 07:51:08 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匹配时发送。

可用的插件

(正在开发更多插件)