技术文摘
怎样使 js 不缓存
2025-01-09 18:21:29 小编
怎样使js不缓存
在网页开发中,JavaScript 缓存有时会给开发者带来困扰,比如更新了 JS 文件内容,页面却依旧加载旧版本。那么,怎样有效避免 JS 缓存呢?
一种常用方法是在 URL 中添加版本参数或时间戳。例如,原本的引用是<script src="example.js"></script>,我们可以修改为<script src="example.js?v=1"></script>。每次对 JS 文件有更新时,将版本号 v 的值递增,如改为 v=2、v=3 等。这能让浏览器认为这是一个全新的资源,从而绕过缓存直接加载最新内容。使用时间戳也是类似原理,<script src="example.js?t=1689834567"></script>,由于时间戳不断变化,浏览器会判定为新资源并重新加载。
利用 HTTP 头信息控制缓存也是不错的选择。在服务器端设置响应头,禁止缓存。以 Node.js 为例,借助 Express 框架,可以这样操作:
const express = require('express');
const app = express();
app.get('/example.js', (req, res) => {
res.set('Cache-Control', 'no-cache, no-store, must-revalidate');
res.set('Pragma', 'no-cache');
res.set('Expires', '0');
res.sendFile(__dirname + '/example.js');
});
const port = 3000;
app.listen(port, () => {
console.log(`Server running on port ${port}`);
});
这段代码通过设置Cache-Control、Pragma和Expires等响应头,告诉浏览器不要缓存该 JS 文件。
对于静态资源管理工具,如 Webpack,也有相应策略。Webpack 可以通过插件对输出的文件名添加哈希值。在配置文件中添加如下内容:
const path = require('path');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
module.exports = {
output: {
filename: '[name].[contenthash].js',
path: path.resolve(__dirname, 'dist')
},
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
use: 'babel-loader'
}
]
},
plugins: [
new MiniCssExtractPlugin({
filename: '[name].[contenthash].css'
})
]
};
这样,每次构建项目时,生成的 JS 文件名都会带有基于文件内容生成的哈希值。只要文件内容改变,哈希值就不同,浏览器就会将其当作新文件加载,有效避免了缓存问题。
通过这些方法,能在不同场景下确保 JS 文件不被缓存,让页面始终加载最新的代码,提升开发效率和用户体验。
- Linux 中非登录系统用户执行命令的实现方法
- Shell -z 与 -n 的使用差异
- 利用 PowerShell 编写持续单击 J 键的脚本
- Shell 中的条件、变量、表达式 0 和 1 及数值与字符串判断
- Linux 中修改文件名的多样方法汇总
- PowerShell 与 FFmpeg 探寻 Windows 内全部损坏音频文件
- 利用 PowerShell 实现 Excel 工作表独立文件保存
- PowerShell 模拟 J 键按下并终止脚本
- Linux 中重命名文件和目录的若干方法
- VBA 数组与字典去重的多种方法
- 正确在后台运行 shell 脚本的方式
- 通过 PowerShell 定时播放视频及音频文件
- Linux 下内存使用情况查看方法汇总
- Linux Shell 任务控制的实现范例
- VBA 全文件快速替换的示例代码实现