renatomarinho / laravel-page-speed
Laravel Page Speed
Requires
- php: ^8.0
- illuminate/support: ^6.0 || ^7.0 || ^8.0 || ^9.0
Requires (Dev)
- mockery/mockery: ^1.4
- orchestra/testbench: ^4.0 || ^5.0 || ^6.0 || ^7.0
- phpunit/phpunit: ^8.5 || ^9.0
- squizlabs/php_codesniffer: ^3.6
README
Laravel Page Speed
这是一个简单的包,可以在需要时压缩HTML输出,从而实现35%以上的优化。Laravel Page Speed由Renato Marinho创建,并由João Roberto P. Borges、Lucas Mesquita Borges和Renato 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"会自动调用它。
之前
之后
\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。
警告:将 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 ];
默认情况下,此字段已配置了一些选项,因此请根据您的需求进行配置...
注意:此包自动跳过 'binary' 和 'streamed' 响应。有关更多信息,请参阅 文件下载。
测试
$ composer test
贡献
有关详细信息,请参阅 CONTRIBUTING。
贡献者
灵感
Mod Page Speed (https://www.modpagespeed.com/)
许可协议
MIT 许可协议(MIT)。有关更多信息,请参阅 许可文件。