innoge / laravel-speculation-rules-api
这是一个Laravel包,它为使用speculation rules api提供了一种简化的解决方案。
v0.1.0
2024-08-09 17:06 UTC
Requires
- php: ^8.2
- illuminate/contracts: ^10.0||^11.0
- spatie/laravel-package-tools: ^1.16
Requires (Dev)
- larastan/larastan: ^2.9
- laravel/pint: ^1.14
- mockery/mockery: ^1.6
- nunomaduro/collision: ^8.1.1||^7.10.0
- orchestra/testbench: ^9.0.0||^8.22.0
- pestphp/pest: ^2.34
- pestphp/pest-plugin-arch: ^2.7
- pestphp/pest-plugin-laravel: ^2.3
- phpstan/extension-installer: ^1.3
- phpstan/phpstan-deprecation-rules: ^1.1
- phpstan/phpstan-phpunit: ^1.3
- spatie/laravel-ray: ^1.35
README
此Laravel包提供了一个简化的解决方案来利用Speculation Rules API,可显著加快您网站的性能。
注意
Speculation Rules API是一项实验性技术。
更多详细信息,请参阅MDN Web Docs。
安装
您可以通过composer安装此包
composer require innoge/laravel-speculation-rules-api
您可以使用以下命令发布配置文件
php artisan vendor:publish --tag="laravel-speculation-rules-api-config"
这是已发布配置文件的内容
<?php return [ /* |-------------------------------------------------------------------------- | Default Eagerness |-------------------------------------------------------------------------- | | This value is the default eagerness for the prerender and prefetch rules. | You can set it to 'eager', 'moderate' or 'conservative'. | */ 'default_eagerness' => 'moderate', /* |-------------------------------------------------------------------------- | Prerender Rules |-------------------------------------------------------------------------- | | Here you may specify custom prerender rules for the application. | */ 'prerender' => [ // [ // 'source' => 'list', // 'urls' => ['page-1', 'page-2'], // 'eagerness' => 'moderate', // ], // // parameter usage example // [ // ['href_matches' => '/page-3/*'], // ['not' => ['href_matches' => '/page-3/*/*']], // ], ], /* |-------------------------------------------------------------------------- | Prefetch Rules |-------------------------------------------------------------------------- | | Here you may specify custom prefetch rules for the application. | */ 'prefetch' => [ // [ // 'urls' => ['page-4'], // 'referrer_policy' => 'no-referrer', // 'eagerness' => 'moderate', // ], ], ];
请在head
标签内添加以下Blade指令。
<html> <head> <!-- ... --> @speculationRulesApi </head> ... </html>
用法
要预渲染或预取一个路由,只需将prerender
或prefetch
方法添加到路由定义中。
// prerender Route::get('/page-1', function () { return view('...'); })->prerender(); // prefetch Route::get('/page-1', function () { return view('...'); })->prefetch();
eagerness
级别可以作为参数传递给prerender
和prefetch
方法,例如。
// prerender Route::get('/page-1', function () { return view('...'); })->prerender('eager'); // prefetch Route::get('/page-1', function () { return view('...'); })->prefetch('eager');
预渲染/预取
如果您预渲染一个URL,所有资源都将被获取,DOM将在后台渲染。这将避免您之前遇到的许多布局偏移。如果您预取一个页面,则只获取资源。这可以导致页面加载速度更快。
有关更多信息,请参阅以下页面
急切级别(从Chrome 122开始可用)
eager
立即预渲染/预取URL。moderate
在链接悬停时预渲染/预取。conservative
仅在链接点击时预渲染/预取。
或者,您可以通过包配置使用Speculation Rules API,例如。
return [ // ... 'prerender' => [ [ 'source' => 'list', 'urls' => ['page-1'], 'eagerness' => 'moderate', ], ], 'prefetch' => [ [ 'urls' => ['page-2'], 'referrer_policy' => 'no-referrer', 'eagerness' => 'moderate', ], ], ];
有关可用选项的更多信息,请参阅MDN Web Docs。
测试
composer test
变更日志
有关最近更改的更多信息,请参阅CHANGELOG。
贡献
有关详细信息,请参阅CONTRIBUTING。
安全漏洞
有关如何报告安全漏洞的更多信息,请参阅我们的安全策略。
致谢
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件。