laravelの静的ファイルのキャッシュをクリアする方法(詳細な方法)

PHPz
リリース: 2023-04-07 17:22:49
オリジナル
1026 人が閲覧しました

Laravel を使用して Web サイトまたはアプリケーションを開発する場合、Web サイトのパフォーマンスとユーザー エクスペリエンスを向上させるために静的ファイルがよく使用されます。これらの静的ファイルには通常、CSS、JavaScript、画像、フォントなどが含まれます。ただし、開発プロセス中に、静的ファイルを変更した後もブラウザーが元のキャッシュされたファイルを引き続き使用し、Web サイトで問題が発生する状況によく遭遇します。そこで、この記事では、静的ファイルを変更した直後に効果を確認できるように、Laravel静的ファイルのキャッシュクリア方法について説明します。

原則

まず、ブラウザが静的ファイルをキャッシュする方法を見てみましょう。ブラウザは静的ファイル要求の識別子 (ETag) を作成し、この識別子を静的ファイルとともにキャッシュに保存します。ブラウザは同じファイルを再度リクエストするたびに、ファイルの識別子をサーバーに送信し、その識別子を使用してキャッシュを検証します。識別子が一致すると、ブラウザはキャッシュからファイルを取得します。

ブラウザのキャッシュはユーザーのコンピュータ上でローカルに行われますが、Laravel アプリケーションでは、静的ファイルの URL を変更したり、他のクエリ パラメーターを追加したりすることで、ブラウザのキャッシュに干渉する可能性があります。これは、静的ファイルが変更されるたびに、その URL を変更したり、クエリ パラメーターを追加したりして、ブラウザーがキャッシュされた古いファイルを使用する代わりに新しいファイルを確実に取得できることを意味します。

次に、この目標を達成する方法を見ていきます。

Laravel 静的ファイル キャッシュのクリア方法

方法 1: URL を手動で変更するか、クエリ パラメーターを追加します

静的ファイルの URL を手動で変更するか、クエリ パラメーターを追加するのは簡単です。キャッシュのクリーンアップ方法。たとえば、CSS ファイルを参照する場合、その URL を次のように変更できます。

<link rel="stylesheet" href="style.css?v=1">
ログイン後にコピー

これにより、ファイルをリクエストするときにクエリ パラメータとして ?v=1 を追加するようにブラウザに指示されます。ファイルを更新したい場合は、クエリ パラメータを ?v=2 またはその他の値に変更します。ファイルが変更されるたびに、URL を更新するか、新しいクエリ パラメータを追加する必要があります。

この方法は比較的単純ですが、各ファイルの URL を手動で更新するか、クエリ パラメーターを追加する必要があり、非常に時間と労力がかかります。

方法 2: Mix とバージョン管理を使用する

Laravel Mix は Laravel のフロントエンド ビルド ツールであり、多くの一般的なフロントエンド ツールを使用してコンパイル、圧縮、およびバージョン管理を行うことができます。 CSS、JavaScript、画像、フォント ファイルをパッケージ化します。 Mix を使用すると、静的ファイル URL を自動的に生成し、ビルドごとにバージョン番号を変更して、ブラウザーが最新のファイルを確実に取得できるようにすることができます。

Mix を使用するには、まず Laravel Mix をインストールする必要があります:

npm install laravel-mix --save-dev
ログイン後にコピー

次に、webpack.mix.js ファイルで静的ファイルとバージョンを定義します:

mix.js('resources/js/app.js', 'public/js')
   .sass('resources/sass/app.scss', 'public/css')
   .version();
ログイン後にコピー

Runnpm run dev または npm run prod は、バージョン番号付きのファイルを生成できます。たとえば、app.css ファイルをコンパイルすると、app.css?id=48d24b ファイルが生成されます。ここで、48d24b は、ファイル。ファイルが変更されるたびに、Laravel Mix は新しいハッシュ値を持つ新しいバージョンを生成します。

Mix で生成された静的ファイル URL を HTML ファイルで使用するには、次のコードを使用できます。

<link rel="stylesheet" href="{{ mix(&#39;css/app.css&#39;) }}">
ログイン後にコピー

これにより、ファイル名がバージョン番号付きのファイル名に自動的に変換されます。たとえば、npm run prod を実行すると、上記のコードは次の結果を生成します:

<link rel="stylesheet" href="/css/app.css?id=48d24b">
ログイン後にコピー

Laravel Mix を使用すると、ファイルの URL を手動で変更する必要がなくなります。またはクエリパラメータを追加します。 Laravel Mix は新しいバージョン番号を自動的に生成し、静的ファイルの URL を変更します。

方法 3: キャッシュ クリア ミドルウェアを使用する

Laravel キャッシュ クリア ミドルウェアを使用すると、リクエストごとにブラウザーのキャッシュをクリアできます。キャッシュ無効化ミドルウェアを使用するには、app/Http/Middleware/CacheControl.php に次のコードを作成します。

<?php

namespace App\Http\Middleware;

use Closure;

class CacheControl
{
    public function handle($request, Closure $next)
    {
        $response = $next($request);

        $response->header('Cache-Control', 'nocache, no-store, max-age=0, must-revalidate');
        $response->header('Pragma', 'no-cache');
        $response->header('Expires', 'Fri, 01 Jan 1990 00:00:00 GMT');

        return $response;
    }
}
ログイン後にコピー

次に、app/Http/Kernel.php にコードを作成します。 ミドルウェアを次の場所に登録します:

protected $middleware = [
    // ...
    \App\Http\Middleware\CacheControl::class,
];
ログイン後にコピー

これで、ブラウザーが静的ファイルをリクエストするたびに、キャッシュを使用する代わりに新しいリクエストがサーバーに送信され、常に最新のファイルを取得できるようになります。

概要

Laravel Mix またはキャッシュクリアミドルウェアを使用して、静的ファイルの URL を手動で変更するか、クエリパラメータを追加することで、Laravel アプリケーションのキャッシュファイルを効果的にクリアし、ユーザーが常に最新のコンテンツ。

さまざまな方法を試して、静的ファイルのキャッシュ クリアを管理するニーズに最も適した方法を選択してください。どの方法を使用する場合でも、Web サイトのパフォーマンスとユーザー エクスペリエンスを良好に維持するには、キャッシュの影響を常に意識する必要があります。

以上がlaravelの静的ファイルのキャッシュをクリアする方法(詳細な方法)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!