Rumah > rangka kerja php > Laravel > Bagaimana untuk cache halaman statik dalam laravel

Bagaimana untuk cache halaman statik dalam laravel

PHPz
Lepaskan: 2023-04-23 09:43:21
asal
1096 orang telah melayarinya

Laravel ialah salah satu rangka kerja yang paling banyak digunakan oleh pembangun PHP, dengan fungsi yang berkuasa dan konfigurasi yang fleksibel. Apabila kita membina aplikasi berasaskan Laravel, kadangkala kita perlu cache beberapa halaman statik untuk meningkatkan prestasi tapak web.

Dalam artikel ini, kami akan menunjukkan cara menggunakan ciri caching Laravel untuk cache halaman statik, dengan itu meningkatkan prestasi aplikasi dan masa tindak balas. Kami akan cuba menyelesaikan tugas ini dalam dua langkah: pertama, kami akan mengkonfigurasi pemacu cache Laravel, dan kemudian kami akan mencipta perisian tengah untuk cache halaman statik.

1. Konfigurasikan pemacu cache

Laravel menyokong pelbagai pemacu cache, seperti Redis, Memcached, APC dan cache fail. Kita boleh memilih pemacu cache yang sesuai dengan kita berdasarkan situasi tertentu. Dalam contoh ini, kami akan menggunakan pemacu cache fail untuk cache halaman statik.

Pertama, dalam fail konfigurasi config/cache.php, kita perlu menukar pemacu cache lalai kepada pemacu cache fail Kodnya adalah seperti berikut:

'default' => env('CACHE_DRIVER', 'file'),
Salin selepas log masuk

Seterusnya, dalam konfigurasi Dalam fail konfigurasi /cache.php, kita perlu menentukan laluan penyimpanan fail cache Kodnya adalah seperti berikut:

'path' => storage_path('framework/cache/data'),
Salin selepas log masuk

Sekarang kita telah mengkonfigurasi pemacu cache Laravel, kita boleh mulakan. membina perisian tengah untuk cache halaman Statik.

2. Cipta perisian tengah untuk menyimpan halaman

Dalam Laravel, perisian tengah ialah bahagian penting dalam memproses permintaan HTTP. Kami boleh menggunakan perisian tengah untuk menapis permintaan, menambah maklumat pengepala, menetapkan kuki dan banyak lagi. Dalam contoh ini, kami akan mencipta perisian tengah untuk menyimpan halaman statik cache.

Pertama, kita perlu mencipta perisian tengah yang dipanggil "CachePage" untuk menyimpan halaman statik. Kita boleh menggunakan arahan berikut untuk menjana middleware baharu:

php artisan make:middleware CachePage
Salin selepas log masuk

Apabila kita menjalankan arahan di atas, Laravel akan secara automatik mencipta fail bernama "CachePage.php" dan meletakkannya dalam direktori app/Http/ Middleware. Buka fail dan tambah kod berikut dalam kaedah pemegang:

public function handle($request, Closure $next)
{
    // 检查此请求是否可以缓存
    if (! $this->shouldCache($request)) {
        return $next($request);
    }

    // 获取此请求的缓存键
    $key = $this->getCacheKey($request);

    // 尝试从缓存中获取此请求的页面
    if (Cache::has($key)) {
        return response(Cache::get($key));
    }

    // 如果没有从缓存中获取到,那么就处理请求并将结果缓存下来
    $response = $next($request);
    if ($this->shouldCacheResponse($response)) {
        Cache::put($key, $response->getContent(), $this->getCacheLifetime());
    }

    return $response;
}

// 检查此请求是否可以缓存
protected function shouldCache($request)
{
    if (!$request->isMethod('get')) {
        return false;
    }

    if ($request->query->count()) {
        return false;
    }

    if (auth()->check()) {
        return false;
    }

    if (config('app.env') === 'local') {
        return false;
    }

    return true;
}

// 获取此请求的缓存键
protected function getCacheKey($request)
{
    return 'cache:' . $request->url();
}

// 检查此请求的响应是否可以缓存
protected function shouldCacheResponse($response)
{
    return $response->status() === 200;
}

// 获取页面缓存的生存时间
protected function getCacheLifetime()
{
    return config('cache.page_cache_lifetime');
}
Salin selepas log masuk

Sekarang, mari kami terangkan kod di atas langkah demi langkah:

  • Kami mula-mula menyemak sama ada permintaan ini boleh dicache. Kami hanya perlu cache permintaan GET, permintaan tanpa sebarang parameter pertanyaan, permintaan tidak disahkan dan permintaan dalam persekitaran bukan setempat.
  • Jika kami menentukan bahawa permintaan ini boleh dicache, kami mendapat kunci cache. Dalam contoh ini, kami menggunakan URL yang diminta sebagai kunci cache.
  • Kemudian kami cuba mendapatkan halaman ini daripada cache. Jika kita boleh mendapatkan halaman daripada cache, kembalikannya dan batalkan proses lain.
  • Jika halaman tidak boleh diperoleh daripada cache, kendalikan permintaan dan cache hasilnya. Akhirnya, hasil pemprosesan dikembalikan.

Sekarang, daftarkan perisian tengah ini dalam fail Kernel.php. Kami menambahkan kod pendaftarannya pada tatasusunan $routeMiddleware, kodnya adalah seperti berikut:

'cache.page' => \App\Http\Middleware\CachePage::class,
Salin selepas log masuk

Sekarang, apabila aplikasi kami memproses laluan yang sepadan dengan middleware CachePage, middleware itu akan disimpan dalam cache dalam sistem fail. Apabila permintaan seterusnya datang, perisian tengah akan mengambil halaman daripada cache dan mengembalikan hasilnya dengan cepat.

Ringkasan

Dalam artikel ini, kami menunjukkan cara untuk cache halaman statik menggunakan fungsi caching Laravel. Kami mula-mula mengkonfigurasi pemacu cache Laravel dan kemudian mencipta perisian tengah untuk cache halaman statik. Sepanjang proses, kami menumpukan pada beberapa amalan terbaik dan kes penggunaan dunia sebenar untuk menunjukkan kepada anda cara mengoptimumkan aplikasi anda bagi memastikan prestasi optimum dan masa tindak balasnya.

Atas ialah kandungan terperinci Bagaimana untuk cache halaman statik dalam laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan