原理首先,让我们看看浏览器如何缓存静态文件。浏览器会为发起的静态文件请求创建一个标识符 (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 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 中创建以下代码:
<?phpnamespace 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静态文件怎么缓存清除(方法详解)的详细内容。
