laravel 정적 파일의 캐시를 지우는 방법(자세한 방법)

PHPz
풀어 주다: 2023-04-07 17:22:49
원래의
1057명이 탐색했습니다.

Laravel을 사용하여 웹사이트나 애플리케이션을 개발할 때 웹사이트의 성능과 사용자 경험을 개선하기 위해 정적 파일이 사용되는 경우가 많습니다. 이러한 정적 파일에는 일반적으로 CSS, JavaScript, 이미지, 글꼴 등이 포함됩니다. 그러나 개발 과정에서 정적 파일을 수정한 후에도 브라우저가 원본 캐시 파일을 계속 사용하여 웹 사이트에 문제를 일으키는 상황이 자주 발생합니다. 그래서 이번 글에서는 정적 파일을 수정한 후 바로 효과를 확인할 수 있도록 Laravel 정적 파일의 캐시 삭제 방법에 대해 설명하겠습니다.

원리

먼저 브라우저가 정적 파일을 캐시하는 방법을 살펴보겠습니다. 브라우저는 정적 파일 요청에 대한 식별자(ETag)를 생성한 다음 이 식별자를 정적 파일과 함께 캐시에 저장합니다. 브라우저는 동일한 파일을 다시 요청할 때마다 서버에 파일 식별자를 보내고 해당 식별자를 사용하여 캐시의 유효성을 검사합니다. 식별자가 일치하면 브라우저는 캐시에서 파일을 가져옵니다.

브라우저 캐싱은 사용자 컴퓨터에서 로컬로 수행되지만 Laravel 애플리케이션에서는 정적 파일의 URL을 변경하거나 다른 쿼리 매개변수를 추가하여 브라우저 캐싱을 방해할 수 있습니다. 즉, 정적 파일이 수정될 때마다 해당 URL을 변경하거나 쿼리 매개변수를 추가하여 브라우저가 캐시된 이전 파일을 사용하는 대신 새 파일을 가져오도록 할 수 있습니다.

다음으로 이를 달성하는 방법을 살펴보겠습니다.

Laravel 정적 파일 캐시 삭제 방법

방법 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 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

이 방법은 비교적 간단하지만 각 파일의 URL을 수동으로 업데이트하거나 쿼리 매개변수를 추가해야 하므로 시간이 많이 걸리고 힘듭니다.

방법 2: 믹스 및 버전 제어 사용

Laravel Mix는 Laravel용 프런트 엔드 빌드 도구로, 널리 사용되는 많은 프런트 엔드 도구를 사용하여 CSS, JavaScript와 같은 파일을 컴파일, 압축 및 패키징할 수 있습니다. , 이미지 및 글꼴. Mix를 사용하면 정적 파일 URL을 자동으로 생성하고 모든 빌드에서 버전 번호를 변경하여 브라우저가 최신 파일을 얻을 수 있도록 할 수 있습니다.

Mix를 사용하려면 먼저 Laravel Mix를 설치해야 합니다:

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿