Heim > PHP-Framework > Laravel > Hauptteil

So leeren Sie den Cache statischer Laravel-Dateien (detaillierte Methode)

PHPz
Freigeben: 2023-04-07 17:22:49
Original
1022 Leute haben es durchsucht

Bei der Entwicklung einer Website oder Anwendung mit Laravel werden häufig statische Dateien verwendet, um die Leistung und Benutzererfahrung der Website zu verbessern. Zu diesen statischen Dateien gehören typischerweise CSS, JavaScript, Bilder, Schriftarten und mehr. Während des Entwicklungsprozesses kommt es jedoch häufig vor, dass der Browser nach der Änderung der statischen Datei immer noch die ursprüngliche zwischengespeicherte Datei verwendet, was zu Problemen mit der Website führt. Daher werden wir in diesem Artikel über Cache-Löschmethoden für statische Laravel-Dateien sprechen, damit Sie die Wirkung sofort nach der Änderung der statischen Dateien sehen können.

Prinzip

Sehen wir uns zunächst an, wie Browser statische Dateien zwischenspeichern. Der Browser erstellt eine Kennung (ETag) für die statische Dateianforderung und speichert diese Kennung dann zusammen mit der statischen Datei im Cache. Jedes Mal, wenn der Browser dieselbe Datei erneut anfordert, sendet er dem Server eine Kennung für die Datei und verwendet diese Kennung zur Validierung des Caches. Wenn die Kennungen übereinstimmen, ruft der Browser die Datei aus dem Cache ab.

Obwohl das Browser-Caching lokal auf dem Computer des Benutzers erfolgt, können wir in einer Laravel-Anwendung das Browser-Caching stören, indem wir die URL statischer Dateien ändern oder andere Abfrageparameter hinzufügen. Dies bedeutet, dass wir jedes Mal, wenn eine statische Datei geändert wird, ihre URL ändern oder Abfrageparameter hinzufügen können, um sicherzustellen, dass der Browser die neue Datei erhält, anstatt die zwischengespeicherte alte Datei zu verwenden.

Als nächstes werden wir sehen, wie wir dies erreichen können.

Laravel-Methode zum Löschen des Caches statischer Dateien

Methode 1: URL manuell ändern oder Abfrageparameter hinzufügen

Das manuelle Ändern der URL der statischen Datei oder das Hinzufügen von Abfrageparametern ist eine einfache Methode zum Löschen des Caches. Wenn wir beispielsweise auf eine CSS-Datei verweisen, können wir deren URL ändern in:

<link rel="stylesheet" href="style.css?v=1">
Nach dem Login kopieren

Dadurch wird der Browser angewiesen, ?v=1 als Abfrageparameter hinzuzufügen, wenn er die Datei anfordert. Wenn wir die Datei aktualisieren möchten, können wir den Abfrageparameter in ?v=2 oder einen anderen Wert ändern. Jedes Mal, wenn eine Datei geändert wird, muss die URL aktualisiert oder neue Abfrageparameter hinzugefügt werden. ?v=1 作为查询参数。如果我们想更新文件,可以将查询参数更改为 ?v=2 或任何其他值。每次修改文件时,都需要更新 URL 或添加新的查询参数。

尽管这种方法相对简单,但需要手动更新每个文件的 URL 或添加查询参数,非常费时费力。

方法二:使用 Mix 和版本控制

Laravel Mix 是 Laravel 的一个前端构建工具,它允许您使用许多流行的前端工具来编译、压缩和打包 CSS、JavaScript、图片和字体等文件。Mix 可以帮助您自动生成静态文件 URL,并在每次构建时更改版本号,以确保浏览器获取最新的文件。

要使用 Mix,我们需要先安装 Laravel Mix:

npm install laravel-mix --save-dev
Nach dem Login kopieren

然后,在 webpack.mix.js 文件中定义静态文件和版本:

mix.js('resources/js/app.js', 'public/js')
   .sass('resources/sass/app.scss', 'public/css')
   .version();
Nach dem Login kopieren

运行 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;) }}">
Nach dem Login kopieren

这会自动将文件名转换为带有版本号的文件名。例如,如果我们运行 npm run prod,则上面的代码将生成以下结果:

<link rel="stylesheet" href="/css/app.css?id=48d24b">
Nach dem Login kopieren

通过使用 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;
    }
}
Nach dem Login kopieren

然后,在 app/Http/Kernel.php

Obwohl diese Methode relativ einfach ist, erfordert sie eine manuelle Aktualisierung der URL jeder Datei oder das Hinzufügen von Abfrageparametern, was sehr zeitaufwändig und mühsam ist.

Methode 2: Verwenden von Mix und Versionskontrolle

Laravel Mix ist ein Front-End-Build-Tool für Laravel, mit dem Sie viele beliebte Front-End-Tools zum Kompilieren, Komprimieren und Verpacken von Dateien wie CSS und JavaScript verwenden können , Bilder und Schriftarten. Mix kann Ihnen dabei helfen, automatisch statische Datei-URLs zu generieren und die Versionsnummer bei jedem Build zu ändern, um sicherzustellen, dass der Browser die neuesten Dateien erhält.

Um Mix zu verwenden, müssen wir zuerst Laravel Mix installieren:

protected $middleware = [
    // ...
    \App\Http\Middleware\CacheControl::class,
];
Nach dem Login kopieren
Dann definieren Sie statische Dateien und Versionen in der Datei webpack.mix.js: 🎜rrreee🎜Führen Sie npm run dev aus oder npm run prod können eine Datei mit einer Versionsnummer generieren. Wenn wir beispielsweise die Datei app.css kompilieren, wird die Datei app.css?id=48d24b generiert, wobei 48d24b die Datei ist Hash des Dateiwerts. Jedes Mal, wenn eine Datei geändert wird, generiert Laravel Mix eine neue Version mit einem neuen Hash-Wert. 🎜🎜Um von Mix generierte statische Datei-URLs in HTML-Dateien zu verwenden, können Sie den folgenden Code verwenden: 🎜rrreee🎜Dadurch wird der Dateiname automatisch in einen Dateinamen mit einer Versionsnummer konvertiert. Wenn wir beispielsweise npm run prod ausführen, generiert der obige Code die folgenden Ergebnisse: 🎜rrreee🎜Durch die Verwendung von Laravel Mix müssen wir die URL der Datei nicht manuell ändern oder eine Abfrage hinzufügen Parameter. Laravel Mix generiert automatisch eine neue Versionsnummer für uns und ändert die URL der statischen Dateien. 🎜🎜Methode 3: Cache-Lösch-Middleware verwenden🎜🎜Mit der Laravel-Cache-Lösch-Middleware können wir den Browser-Cache bei jeder Anfrage leeren. Um die Cache-Busting-Middleware zu verwenden, können wir den folgenden Code in app/Http/Middleware/CacheControl.php erstellen: 🎜rrreee🎜Dann in app/Http/Kernel.php Middleware registrieren in: 🎜rrreee🎜 Jetzt sendet der Browser jedes Mal, wenn er eine statische Datei anfordert, eine neue Anfrage an den Server, anstatt den Cache zu verwenden, um sicherzustellen, dass wir immer die neueste Datei erhalten. 🎜🎜Zusammenfassung🎜🎜Durch manuelles Ändern der URL statischer Dateien oder Hinzufügen von Abfrageparametern, Verwendung von Laravel Mix oder Verwendung von Cache-Clearing-Middleware können wir Cache-Dateien in Laravel-Anwendungen effektiv löschen und sicherstellen, dass Benutzer immer den neuesten Inhalt sehen. 🎜🎜 Probieren Sie verschiedene Methoden aus und wählen Sie diejenige aus, die Ihren Anforderungen zum Verwalten des Cache-Löschens statischer Dateien am besten entspricht. Unabhängig davon, welche Methode Sie verwenden, sollten Sie sich immer der Auswirkungen des Caching bewusst sein, um sicherzustellen, dass Ihre Website stets eine gute Leistung und Benutzererfahrung beibehält. 🎜

Das obige ist der detaillierte Inhalt vonSo leeren Sie den Cache statischer Laravel-Dateien (detaillierte Methode). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!