0

0

laravel静态文件怎么缓存清除(方法详解)

PHPz

PHPz

发布时间:2023-04-07 17:02:45

|

1127人浏览过

|

来源于php中文网

原创

在使用 laravel 开发网站或应用程序时,经常会使用静态文件来提高网站的性能和用户体验。这些静态文件通常包括 css、javascript、图片和字体等等。但是在开发过程中,经常会遇到修改静态文件后,浏览器仍然使用原来的缓存文件,导致网站出现问题的情况。因此,在这篇文章中,我们将谈论 laravel 静态文件的缓存清除方法,以便您可以在修改静态文件后立即看到效果。

原理

首先,让我们看看浏览器如何缓存静态文件。浏览器会为发起的静态文件请求创建一个标识符 (ETag),然后将此标识符与静态文件一起保存到缓存中。每次浏览器再次请求相同的文件时,它将向服务器发送该文件的标识符,并使用该标识符验证缓存。如果标识符匹配,浏览器将从缓存中提取文件。

虽然浏览器缓存是在用户电脑本地完成的,但在 Laravel 应用程序中,我们可以通过更改静态文件的 URL 或添加其它查询参数来干扰浏览器缓存。这意味着每次修改静态文件时,我们可以更改其 URL 或添加查询参数,以确保浏览器会获取新的文件,而不是使用缓存的旧文件。

接下来,我们将看到如何实现这一目标。

Laravel 静态文件缓存清除方法

方法一:手动更改 URL 或添加查询参数

手动更改静态文件的 URL 或添加查询参数是一种简单的缓存清除方法。例如,我们可以在引用 CSS 文件时,将其 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 文件中定义静态文件和版本:

SEEK.ai
SEEK.ai

AI驱动的智能数据解决方案,询问您的任何数据并立即获得答案

下载
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,可以使用以下代码:

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

通过使用 Laravel Mix,我们无需手动更改文件的 URL 或添加查询参数。Laravel Mix 将自动为我们生成新的版本号,并更改静态文件的 URL。

方法三:使用缓存清除中间件

Laravel 缓存清除中间件允许我们在每次请求时清除浏览器缓存。要使用缓存清除中间件,我们可以在 app/Http/Middleware/CacheControl.php 中创建以下代码:

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 应用程序中的缓存文件,并确保用户始终看到最新的内容。

尝试不同的方法,并选择最适合您需要的方法来管理静态文件的缓存清除。无论使用哪种方法,都应该时刻注意缓存的影响,以确保您的网站始终保持良好性能和用户体验。

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
laravel组件介绍
laravel组件介绍

laravel 提供了丰富的组件,包括身份验证、模板引擎、缓存、命令行工具、数据库交互、对象关系映射器、事件处理、文件操作、电子邮件发送、队列管理和数据验证。想了解更多laravel的相关内容,可以阅读本专题下面的文章。

320

2024.04.09

laravel中间件介绍
laravel中间件介绍

laravel 中间件分为五种类型:全局、路由、组、终止和自定。想了解更多laravel中间件的相关内容,可以阅读本专题下面的文章。

278

2024.04.09

laravel使用的设计模式有哪些
laravel使用的设计模式有哪些

laravel使用的设计模式有:1、单例模式;2、工厂方法模式;3、建造者模式;4、适配器模式;5、装饰器模式;6、策略模式;7、观察者模式。想了解更多laravel的相关内容,可以阅读本专题下面的文章。

373

2024.04.09

thinkphp和laravel哪个简单
thinkphp和laravel哪个简单

对于初学者来说,laravel 的入门门槛较低,更易上手,原因包括:1. 更简单的安装和配置;2. 丰富的文档和社区支持;3. 简洁易懂的语法和 api;4. 平缓的学习曲线。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

374

2024.04.10

laravel入门教程
laravel入门教程

本专题整合了laravel入门教程,想了解更多详细内容,请阅读专题下面的文章。

86

2025.08.05

laravel实战教程
laravel实战教程

本专题整合了laravel实战教程,阅读专题下面的文章了解更多详细内容。

65

2025.08.05

laravel面试题
laravel面试题

本专题整合了laravel面试题相关内容,阅读专题下面的文章了解更多详细内容。

68

2025.08.05

什么是中间件
什么是中间件

中间件是一种软件组件,充当不兼容组件之间的桥梁,提供额外服务,例如集成异构系统、提供常用服务、提高应用程序性能,以及简化应用程序开发。想了解更多中间件的相关内容,可以阅读本专题下面的文章。

178

2024.05.11

java入门学习合集
java入门学习合集

本专题整合了java入门学习指南、初学者项目实战、入门到精通等等内容,阅读专题下面的文章了解更多详细学习方法。

1

2026.01.29

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号