Laravel을 사용하여 웹사이트나 애플리케이션을 개발할 때 웹사이트의 성능과 사용자 경험을 개선하기 위해 정적 파일이 사용되는 경우가 많습니다. 이러한 정적 파일에는 일반적으로 CSS, JavaScript, 이미지, 글꼴 등이 포함됩니다. 그러나 개발 과정에서 정적 파일을 수정한 후에도 브라우저가 원본 캐시 파일을 계속 사용하여 웹 사이트에 문제를 일으키는 상황이 자주 발생합니다. 그래서 이번 글에서는 정적 파일을 수정한 후 바로 효과를 확인할 수 있도록 Laravel 정적 파일의 캐시 삭제 방법에 대해 설명하겠습니다.
먼저 브라우저가 정적 파일을 캐시하는 방법을 살펴보겠습니다. 브라우저는 정적 파일 요청에 대한 식별자(ETag)를 생성한 다음 이 식별자를 정적 파일과 함께 캐시에 저장합니다. 브라우저는 동일한 파일을 다시 요청할 때마다 서버에 파일 식별자를 보내고 해당 식별자를 사용하여 캐시의 유효성을 검사합니다. 식별자가 일치하면 브라우저는 캐시에서 파일을 가져옵니다.
브라우저 캐싱은 사용자 컴퓨터에서 로컬로 수행되지만 Laravel 애플리케이션에서는 정적 파일의 URL을 변경하거나 다른 쿼리 매개변수를 추가하여 브라우저 캐싱을 방해할 수 있습니다. 즉, 정적 파일이 수정될 때마다 해당 URL을 변경하거나 쿼리 매개변수를 추가하여 브라우저가 캐시된 이전 파일을 사용하는 대신 새 파일을 가져오도록 할 수 있습니다.
다음으로 이를 달성하는 방법을 살펴보겠습니다.
방법 1: 수동으로 URL 변경 또는 쿼리 매개변수 추가
정적 파일의 URL을 수동으로 변경하거나 쿼리 매개변수를 추가하는 것은 간단한 캐시 삭제 방법입니다. 예를 들어 CSS 파일을 참조할 때 해당 URL을 다음과 같이 변경할 수 있습니다.
<link rel="stylesheet" href="style.css?v=1">
이렇게 하면 브라우저가 파일을 요청할 때 쿼리 매개변수로 ?v=1
을 추가하도록 지시합니다. 파일을 업데이트하려면 쿼리 매개변수를 ?v=2
또는 다른 값으로 변경할 수 있습니다. 파일이 수정될 때마다 URL을 업데이트하거나 새 쿼리 매개변수를 추가해야 합니다. ?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🎜Run npm run dev
또는 npm run prod
는 버전 번호가 포함된 파일을 생성할 수 있습니다. 예를 들어 app.css
파일을 컴파일하면 app.css?id=48d24b
파일이 생성됩니다. 여기서 48d24b
는 파일 값의 해시입니다. 파일이 수정될 때마다 Laravel Mix는 새로운 해시 값을 가진 새 버전을 생성합니다. 🎜🎜Mix에서 생성된 정적 파일 URL을 HTML 파일에 사용하려면 다음 코드를 사용할 수 있습니다. 🎜rrreee🎜이렇게 하면 파일 이름이 버전 번호가 있는 파일 이름으로 자동 변환됩니다. 예를 들어 npm run prod
를 실행하면 위 코드는 다음과 같은 결과를 생성합니다. 🎜rrreee🎜Laravel Mix를 사용하면 파일의 URL을 수동으로 변경하거나 쿼리를 추가할 필요가 없습니다. 매개변수. Laravel Mix는 자동으로 새 버전 번호를 생성하고 정적 파일의 URL을 변경합니다. 🎜🎜방법 3: 캐시 지우기 미들웨어 사용🎜🎜Laravel 캐시 지우기 미들웨어를 사용하면 모든 요청에 대해 브라우저 캐시를 지울 수 있습니다. 캐시 무효화 미들웨어를 사용하려면 app/Http/Middleware/CacheControl.php
에서 다음 코드를 생성할 수 있습니다. 🎜rrreee🎜그런 다음 app/Http/Kernel.php
에서 > 미들웨어 등록: 🎜rrreee🎜 이제 브라우저가 정적 파일을 요청할 때마다 캐시를 사용하는 대신 서버에 새 요청을 보내므로 항상 최신 파일을 얻을 수 있습니다. 🎜🎜요약🎜🎜Laravel Mix나 캐시 삭제 미들웨어를 사용하여 정적 파일의 URL을 수동으로 변경하거나 쿼리 매개변수를 추가함으로써 Laravel 애플리케이션에서 캐시 파일을 효과적으로 삭제하고 사용자가 항상 최신 콘텐츠를 볼 수 있도록 보장할 수 있습니다. 🎜🎜 다양한 방법을 시도해보고 정적 파일의 캐시 지우기 관리에 가장 적합한 방법을 선택하세요. 어떤 방법을 사용하든 웹 사이트가 우수한 성능과 사용자 경험을 유지하도록 항상 캐싱의 영향을 인식해야 합니다. 🎜위 내용은 laravel 정적 파일의 캐시를 지우는 방법(자세한 방법)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!