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.
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.
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">
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
然后,在 webpack.mix.js
文件中定义静态文件和版本:
mix.js('resources/js/app.js', 'public/js') .sass('resources/sass/app.scss', 'public/css') .version();
运行 npm run dev
或 npm run prod
可以生成具有版本号的文件。例如,如果我们编译 app.css
文件,它将生成 app.css?id=48d24b
文件,其中 48d24b
是文件的哈希值。每次修改文件时,Laravel Mix 将使用新的哈希值生成新的版本。
要在 HTML 文件中使用 Mix 生成的静态文件 URL,可以使用以下代码:
<link rel="stylesheet" href="{{ mix('css/app.css') }}">
这会自动将文件名转换为带有版本号的文件名。例如,如果我们运行 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, ];
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!