ideal-creative-lab/laravel-tachyon

v3.2.2 2023-10-26 20:57 UTC

This package is auto-updated.

Last update: 2024-09-26 23:17:23 UTC


README

Support Ukraine Support Ukraine


Laravel Tachyon Laravel Tachyon

Latest Stable Version PHP Version Require License

简介

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

请根据您的具体需求调整配置选项。

注意: 默认情况下,该包自动跳过 binarystreamed 响应。有关更多信息,请参阅 文件下载

测试

$ composer test

贡献

有关详细信息,请参阅 贡献指南

许可协议

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