codeat3/laravel-page-speed

此包已被废弃且不再维护。没有建议的替代包。

Laravel Page Speed

2.3.0 2024-02-27 15:23 UTC

README

Laravel Page Speed logo

Build Status Latest Stable Version Total Downloads License

这是一个临时的分支,直到添加了 Laravel 9 支持。原始仓库维护得很好,此分支不再需要。

Laravel Page Speed

一个简单的包,可以按需压缩 HTML 输出,从而实现 35% 以上的优化。Laravel Page Speed 由 Renato Marinho 创建,并由 João Roberto P. BorgesLucas Mesquita BorgesRenato Marinho 维护。

安装

需求

您可以通过 composer 安装此包

composer require renatomarinho/laravel-page-speed

此包支持 Laravel 包发现

发布配置文件

php artisan vendor:publish --provider="RenatoMarinho\LaravelPageSpeed\ServiceProvider"

不要忘记注册中间件

接下来,在 kernel 中注册 \RenatoMarinho\LaravelPageSpeed\Middleware\CollapseWhitespace::class 和其他中间件,例如

//app/Http/Kernel.php

protected $middleware = [
    ...
    \RenatoMarinho\LaravelPageSpeed\Middleware\InlineCss::class,
    \RenatoMarinho\LaravelPageSpeed\Middleware\ElideAttributes::class,
    \RenatoMarinho\LaravelPageSpeed\Middleware\InsertDNSPrefetch::class,
    \RenatoMarinho\LaravelPageSpeed\Middleware\RemoveComments::class,
    //\RenatoMarinho\LaravelPageSpeed\Middleware\TrimUrls::class, 
    //\RenatoMarinho\LaravelPageSpeed\Middleware\RemoveQuotes::class,
    \RenatoMarinho\LaravelPageSpeed\Middleware\CollapseWhitespace::class, // Note: This middleware invokes "RemoveComments::class" before it runs.
    \RenatoMarinho\LaravelPageSpeed\Middleware\DeferJavascript::class,
]

中间件详细信息

\RenatoMarinho\LaravelPageSpeed\Middleware\RemoveComments::class

RemoveComments::class 过滤器通过删除 HTML、JS 和 CSS 注释来消除它们。该过滤器通过删除注释来减少 HTML 文件的传输大小。根据 HTML 文件,此过滤器可以显著减少网络上传输的字节数。

\RenatoMarinho\LaravelPageSpeed\Middleware\CollapseWhitespace::class

CollapseWhitespace::class 过滤器通过删除不必要的空白来减少 HTML 文件中传输的字节数。此中间件在执行之前调用 RemoveComments::class 过滤器。

注意:不要与 "RemoveComments::class" 过滤器一起注册。因为它将由 "CollapseWhitespace::class" 自动调用。

之前

Before of Laravel Page Speed

之后

After of Laravel Page Speed

\RenatoMarinho\LaravelPageSpeed\Middleware\RemoveQuotes::class

RemoveQuotes::class 过滤器通过从 HTML 属性中删除不必要的引号来消除它们。虽然各种 HTML 规范要求使用它们,但浏览器允许在某些字符子集(字母数字和某些标点符号)的情况下省略属性值。

引号删除在大多数页面上可以产生适度的字节节省。

\RenatoMarinho\LaravelPageSpeed\Middleware\ElideAttributes::class

ElideAttributes::class 过滤器通过从标签中删除属性来减少 HTML 文件的传输大小,当指定值等于该属性的默认值时。这可以节省一些字节,并可能通过规范化受影响的标签来使文档更易于压缩。

\RenatoMarinho\LaravelPageSpeed\Middleware\InsertDNSPrefetch::class

InsertDNSPrefetch::class 过滤器通过在 HEAD 中注入标签来启用浏览器进行 DNS 预取。

由于 DNS 的级联性质,DNS 解析时间从本地缓存的 <1ms 到数百毫秒不等。这可以显著影响总页面加载时间。此过滤器通过在 HTML 开头提供提示来减少 DNS 查找时间,允许浏览器预先解析页面上的资源。

⚠️ \RenatoMarinho\LaravelPageSpeed\Middleware\TrimUrls::class,

《TrimUrls::class》过滤器通过将URL解析为相对于页面基础URL的相对URL来修剪URL。

警告:`TrimUrls::class` 被认为是中等风险。如果它使用错误的基URL,可能会引起问题。例如,如果您提供的HTML将被直接粘贴到其他HTML页面中,这可能会导致问题。如果在第一页上修剪URL,那么它们将对于它们插入的页面是不正确的。在这种情况下,只需禁用中间件即可。

\RenatoMarinho\LaravelPageSpeed\Middleware\InlineCss::class

《InlineCss::class》过滤器通过将CSS移动到头部,将标签内的“style”属性转换为类。

\RenatoMarinho\LaravelPageSpeed\Middleware\DeferJavascript::class

延迟HTML中的JavaScript执行。

如果需要在某些脚本中取消延迟,请使用`data-pagespeed-no-defer`作为脚本属性来取消延迟。

配置

安装包后,您可能需要配置一些选项。

禁用服务

您可能希望设置本地环境以获取可读的输出。

//config/laravel-page-speed.php

//Set this field to false to disable the laravel page speed service.
'enable' => env('LARAVEL_PAGE_SPEED_ENABLE', true),

跳过路由

您可能希望配置包以跳过某些路由。

//config/laravel-page-speed.php

//You can use * as wildcard.
'skip' => [
    '*.pdf', //Ignore all routes with final .pdf
    '*/downloads/*',//Ignore all routes that contain 'downloads'
    'assets/*', // Ignore all routes with the 'assets' prefix
];

默认情况下,此字段已经配置了一些选项,因此请根据您的需求进行配置...

注意:此包自动跳过“二进制”和“流式”响应。请参阅文件下载

测试

$ composer test

贡献

有关详细信息,请参阅CONTRIBUTING

贡献者

灵感来源

Mod Page Speed (https://www.modpagespeed.com/)

许可证

MIT许可证(MIT)。有关更多信息,请参阅许可证文件