ideal-creative-lab / laravel-tachyon
Laravel Tachyon
Requires
- php: ^8.0
- illuminate/support: ^9.0 || ^10.0
Requires (Dev)
- laravel/pint: ^1.10
- mockery/mockery: ^1.6
- orchestra/testbench: ^6.0 || ^7.0
- pestphp/pest: ^1.23
- phpunit/phpunit: ^9.6
- squizlabs/php_codesniffer: ^3.7
README
简介
Laravel Tachyon
是一个强大的包,旨在通过按需最小化 HTML 输出来优化您的 Laravel 应用程序的性能。通过超过 35% 的优化,它有助于提高页面加载速度和整体用户体验。
Laravel Tachyon 支持
-
Laravel Livewire:Laravel Tachyon 可以无缝集成 Laravel Livewire,允许您优化 Livewire 组件的 HTML 输出。
-
Alpine JS:Laravel Tachyon 与 Alpine JS 兼容,确保优化过程不会干扰 Alpine JS 组件的功能。
此外,Laravel Tachyon 确保优化过程不会破坏以下 HTML 元素
-
<pre>
:用于显示预格式化文本的内容,通常在<pre>
标签内,在优化过程中得到保留且不会被修改。 -
<textarea>
:用于多行文本输入字段的内容,在<textarea>
标签内也得到保留且不会被修改。 -
<script>
:用于 JavaScript 代码的内容,不会被 Laravel Tachyon 修改。这确保了您的 JavaScript 代码保持完整并按预期工作。
入门指南
要求
安装
您可以通过 composer 安装此包
composer require ideal-creative-lab/laravel-tachyon
此包支持 Laravel 包发现。
发布配置文件
要自定义包设置,您可以使用以下命令发布配置文件
php artisan vendor:publish --provider="IdealCreativeLab\LaravelTachyon\ServiceProvider"
中间件注册
为了启用包功能,请确保在 Laravel 应用的内核中注册提供的中间件。以下是如何做到这一点的示例
// app/Http/Kernel.php protected $middleware = [ ... \IdealCreativeLab\LaravelTachyon\Middleware\InlineCss::class, \IdealCreativeLab\LaravelTachyon\Middleware\ElideAttributes::class, \IdealCreativeLab\LaravelTachyon\Middleware\InsertDNSPrefetch::class, \IdealCreativeLab\LaravelTachyon\Middleware\RemoveQuotes::class, \IdealCreativeLab\LaravelTachyon\Middleware\CollapseWhitespace::class, \IdealCreativeLab\LaravelTachyon\Middleware\DeferJavascript::class, ]
中间件详细信息
RemoveComments::class
:从输出中删除 HTML、JS 和 CSS 注释,以减少 HTML 文件的传输大小。CollapseWhitespace::class
:通过删除不必要的空白来减少 HTML 文件的大小。- 它在执行之前自动调用
RemoveComments::class
中间件。 - 您可以 忽略 一些元素的压缩。将
data-tachyon-ignore
添加为元素属性即可。
- 它在执行之前自动调用
RemoveQuotes::class
:从 HTML 属性中删除不必要的引号,导致大多数页面上的字节数减少。ElideAttributes::class
:通过删除标签的属性(如果它们的值与默认属性值匹配)来减少 HTML 文件的传输大小。InsertDNSPrefetch::class
:在 HTML<head>
部分中包含<link rel="dns-prefetch" href="//www.example.com">
标签,以启用 DNS 预读取,减少 DNS 查找时间并提高页面加载时间。TrimUrls::class
:通过使它们相对于页面基础 URL 相对来修剪 URL。这有助于减少 URL 的大小,并可能提高性能。- ⚠️ 注意:请谨慎使用此中间件,因为它如果使用错误的基 URL,可能会导致问题。
InlineCss::class
:通过将 CSS 移动到<head>
部分来将 HTML 标签的行内style
属性转换为类,从而提高页面渲染并减少浏览器请求的数量。DeferJavascript::class
:在执行 JavaScript 代码之前,延迟 HTML 中的 JavaScript 代码的执行,优先渲染关键内容。- 如果您需要在某些脚本中取消延迟,请使用
data-tachyon-no-defer
作为脚本属性来取消延迟。
- 如果您需要在某些脚本中取消延迟,请使用
配置
安装包后,您可能需要根据您的需求配置一些选项。
禁用服务
要禁用本地环境中的 Laravel Tachyon 服务并获得可读输出,修改以下配置文件
// config/laravel-tachyon.php //Set this field to false to disable the Laravel Tachyon service. 'enable' => env('LARAVEL_TACHYON_ENABLED', true),
跳过路由
您可以配置该包以跳过某些路由的优化。使用 *
通配符匹配多个路由。以下是一个示例
// config/laravel-tachyon.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
贡献
有关详细信息,请参阅 贡献指南。
许可协议
MIT 许可协议 (MIT)。有关更多信息,请参阅 许可文件。