caujasutom/laravel-optimizer

Laravel性能优化包,通过压缩HTML、缓存等方式提高性能。

dev-master 2024-09-03 18:13 UTC

This package is auto-updated.

Last update: 2024-09-03 18:13:55 UTC


README

Laravel Optimizer包是一组中间件和辅助函数,旨在优化和提高您的Laravel应用性能。它包括HTML压缩、静态HTML缓存和Gzip压缩。

目录

  1. 安装
  2. 配置
  3. 中间件
    1. HTML压缩中间件
    2. 静态HTML缓存中间件
    3. Gzip压缩中间件
  4. 辅助函数
  5. 示例

安装

要安装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函数。此函数负责显示文章列表。

以下是函数的分解

  1. 首先,它使用LaravelOptimizer::cache()->retrieve(request()->url())方法检查当前URL是否有可用的缓存HTML内容。
  2. 如果存在缓存内容,则返回缓存HTML内容作为响应。
  3. 如果缓存内容不存在,则从数据库或其他来源获取文章。
  4. 然后使用View::make()render()方法渲染带有获取文章的articles.index视图。
  5. 生成的HTML内容存储在变量$htmlContent中。
  6. 使用LaravelOptimizer::cache()->store(request()->url(), $htmlContent)方法将生成的HTML内容缓存。
  7. 最后,返回生成的HTML内容作为响应。