首頁 > php框架 > Laravel > 主體

laravel靜態檔案怎麼快取清除(方法詳解)

PHPz
發布: 2023-04-07 17:22:49
原創
930 人瀏覽過

在使用 Laravel 開發網站或應用程式時,經常會使用靜態檔案來提高網站的效能和使用者體驗。這些靜態檔案通常包括 CSS、JavaScript、圖片和字體等等。但是在開發過程中,經常會遇到修改靜態文件後,瀏覽器仍然使用原來的快取文件,導致網站出現問題的情況。因此,在這篇文章中,我們將談論 Laravel 靜態檔案的快取清除方法,以便您可以在修改靜態檔案後立即看到效果。

原則

首先,讓我們看看瀏覽器如何快取靜態檔案。瀏覽器會為發起的靜態檔案要求建立一個識別碼 (ETag),然後將此識別碼與靜態檔案一起儲存到快取中。每次瀏覽器再次請求相同的文件時,它將向伺服器發送該文件的標識符,並使用該標識符驗證快取。如果標識符匹配,瀏覽器將從快取中提取文件。

雖然瀏覽器快取是在使用者電腦本地完成的,但在 Laravel 應用程式中,我們可以透過更改靜態檔案的 URL 或添加其它查詢參數來幹擾瀏覽器快取。這意味著每次修改靜態文件時,我們可以更改其 URL 或新增查詢參數,以確保瀏覽器會取得新的文件,而不是使用快取的舊文件。

接下來,我們將看到如何實現這一目標。

Laravel 靜態檔案快取清除方法

方法一:手動更改URL 或新增查詢參數

手動更改靜態檔案的URL 或新增查詢參數是一種簡單的緩存清除方法。例如,我們可以在引用 CSS 檔案時,將其 URL 變更為:

<link rel="stylesheet" href="style.css?v=1">
登入後複製

這會告訴瀏覽器請求該檔案時,請新增 ?v=1 作為查詢參數。如果我們想更新文件,可以將查詢參數更改為 ?v=2 或任何其他值。每次修改文件時,都需要更新 URL 或新增新的查詢參數。

儘管這種方法相對簡單,但需要手動更新每個文件的 URL 或添加查詢參數,非常費時費力。

方法二:使用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();
登入後複製

執行npm run devnpm run prod 可以產生具有版本號碼的檔案。例如,如果我們編譯 app.css 文件,它將產生 app.css?id=48d24b 文件,其中 48d24b 是檔案的雜湊值。每次修改檔案時,Laravel Mix 將使用新的雜湊值產生新的版本。

要在 HTML 檔案中使用 Mix 產生的靜態檔案 URL,可以使用下列程式碼:

<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。

方法三:使用快取清除中間件

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,
];
登入後複製

現在,每次瀏覽器請求靜態檔案時,它將向伺服器發送一個新的請求,而不是使用緩存,確保我們始終獲得最新的檔案。

總結

透過手動更改靜態文件的URL 或新增查詢參數,使用Laravel Mix 或使用快取清除中間件,我們可以有效地清除Laravel 應用程式中的快取文件,並確保用戶始終看到最新的內容。

嘗試不同的方法,並選擇最適合您需求的方法來管理靜態檔案的快取清除。無論使用哪種方法,都應該隨時注意快取的影響,以確保您的網站始終保持良好效能和使用者體驗。

以上是laravel靜態檔案怎麼快取清除(方法詳解)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!