caujasutom / laravel-optimizer
Laravel性能优化包,通过压缩HTML、缓存等方式提高性能。
Requires
- php: ^8.0
- ext-zlib: *
- illuminate/support: ^10.0 || ^11.0
Requires (Dev)
- orchestra/testbench: ^9.1
- phpunit/phpunit: ^11.3.1
- roave/security-advisories: dev-latest
This package is auto-updated.
Last update: 2024-09-03 18:13:55 UTC
README
Laravel Optimizer包是一组中间件和辅助函数,旨在优化和提高您的Laravel应用性能。它包括HTML压缩、静态HTML缓存和Gzip压缩。
目录
安装
要安装Laravel Optimizer包,请在项目的根目录下运行以下命令
composer require caujasutom/laravel-optimizer
安装包后,通过运行以下命令发布配置文件
php artisan vendor:publish --provider="Caujasutom\LaravelOptimizer\LaravelOptimizerServiceProvider"
配置
配置文件config/laravel_optimizer.php
包含包的默认设置。您可以根据需要修改这些设置。
env('LARAVEL_OPTIMIZER_STATIC_CACHE_TTL', 60),
// Path for storing cache files. 'cache_path' => env('LARAVEL_OPTIMIZER_CACHE_PATH', 'static_cache/'), // Compression level for gzip (0-9). 'compression_level' => env('LARAVEL_OPTIMIZER_COMPRESSION_LEVEL', 9), // Gzip compression settings 'gzip_compression' => [ 'level' => env('LARAVEL_OPTIMIZER_GZIP_COMPRESSION_LEVEL', 9), // Default compression level for Gzip. ], // Minification settings 'minification' => [ 'enabled' => env('LARAVEL_OPTIMIZER_MINIFICATION_ENABLED', true), 'patterns' => [ '/>\s+/s', '/\s+</s', '/(\s)+/s', '/>\s+</', '/[\r\n]+/' ], 'replacements' => [ '>', '<', '\\1', '><', '' ], ],
];
中间件
1. HTML压缩中间件
HtmlMinifyMiddleware
通过删除不必要的空白和换行符来压缩HTML内容。要使用此中间件,请将其添加到app/Http/Kernel.php
文件中。
protected $middlewareGroups = [
'web' => [
// ...
\Caujasutom\LaravelOptimizer\Middleware\HtmlMinifyMiddleware::class,
],
];
2. 静态HTML缓存中间件
StaticHtmlCacheMiddleware
将生成的HTML内容缓存指定的时间。要使用此中间件,请将其添加到routes/web.php
文件中的特定路由或路由组。
Route::middleware(['static.html.cache:60'])
->group(function () {
Route::get('/', 'HomeController@index');
});
上面的例子中数字(60)表示缓存持续时间(分钟)。根据需要调整此值。
3. Gzip压缩中间件
GzipCompressionMiddleware
使用Gzip压缩响应内容。要使用此中间件,请将其添加到app/Http/Kernel.php
文件中。
protected $middlewareGroups = [
'web' => [
// ...
\Caujasutom\LaravelOptimizer\Middleware\GzipCompressionMiddleware::class,
],
// ...
];
辅助函数
该包提供了辅助函数来简化对StaticHtmlCache
类的使用。以下函数可用
LaravelOptimizer::cache()->store()
存储给定URL生成的HTML内容。
LaravelOptimizer::cache()->store($url, $content, $minutes = null);
参数
LaravelOptimizer::cache()->retrieve($url)
检索给定URL缓存的HTML内容。
LaravelOptimizer::cache()->retrieve($url);
参数
返回值
LaravelOptimizer::cache()->delete($url)
删除给定URL缓存的HTML内容。
LaravelOptimizer::cache()->delete($url);
参数
示例
namespace App\Http\Controllers;
use Caujasutom\LaravelOptimizer\Facades\LaravelOptimizer; use Illuminate\Http\Request; use Illuminate\Support\Facades\View;
class ArticlesController extends Controller { /** * Display a listing of articles. * * @return \Illuminate\Http\Response */ public function index() { // Check if cached HTML content exists for this URL $cachedContent = LaravelOptimizer::cache()->retrieve(request()->url()); if ($cachedContent) { // If cached content exists, return it return response($cachedContent); } else { // If cached content doesn't exist, generate and cache new content $articles = Post::all(); // Fetch articles from the database or any other source
// Render the articles view $htmlContent = View::make('articles.index', ['articles' => $articles])->render(); // Cache the generated HTML content for this URL LaravelOptimizer::cache()->store(request()->url(), $htmlContent); return response($htmlContent); } }
}
在这个例子中,我们有一个ArticlesController
和一个index
函数。此函数负责显示文章列表。
以下是函数的分解
- 首先,它使用
LaravelOptimizer::cache()->retrieve(request()->url())
方法检查当前URL是否有可用的缓存HTML内容。 - 如果存在缓存内容,则返回缓存HTML内容作为响应。
- 如果缓存内容不存在,则从数据库或其他来源获取文章。
- 然后使用
View::make()
和render()
方法渲染带有获取文章的articles.index
视图。 - 生成的HTML内容存储在变量
$htmlContent
中。 - 使用
LaravelOptimizer::cache()->store(request()->url(), $htmlContent)
方法将生成的HTML内容缓存。 - 最后,返回生成的HTML内容作为响应。