michelmelo/laravel-page-speed

Laravel Page Speed

1.1.0 2024-03-07 11:13 UTC

This package is auto-updated.

Last update: 2024-09-07 16:09:03 UTC


README

Laravel Page Speed logo

Build Status Latest Stable Version Total Downloads License

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解析时间从本地缓存的结果的<1ms,到由于DNS的级联性质而导致的数百毫秒。这可以显著增加总页面加载时间。此过滤器通过在HTML的开头提供提示来减少DNS查找时间,允许浏览器预先解析页面上的资源。

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

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

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

\RenatoMarinho\LaravelPageSpeed\Middleware\InlineCss::class

InlineCss::class 过滤器将标签的行内 "style" 属性转换为类,通过将 CSS 移动到头部来实现。

\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
];

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

注意:此包自动跳过 'binary' 和 'streamed' 响应。请参阅 文件下载

测试

$ composer test

贡献

请参阅 CONTRIBUTING 了解详细信息。

贡献者

灵感来源

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

许可

MIT 许可证(MIT)。请参阅 许可文件 获取更多信息。