解决前端html页面缓存的问题

本文介绍了前端HTML页面缓存的三个部分:页面内容、CSS和JS文件,并提供了相应的解决策略。通过设置HTTP头信息的Cache-Control和Expires,可以控制页面缓存行为。对于CSS和JS,更新版本号是常见做法。此外,还提到了Chrome开发者工具的Disable cache选项以及针对Safari浏览器的body添加class=“no-cache”的方法。

对于一个html页面,缓存分3部分,一个是页面内容,一个是css样式,一个是js文件

1、页面内容

<meta http-equiv="Expires" content="0">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Cache-control" content="no-cache">
<meta http-equiv="Cache" content="no-cache">

说明:HTTP头信息“Expires”和“Cache-Control”为应用程序服务器提供了一个控制浏览器和代理服务器上缓存的机制。HTTP头信息Expires告诉代理服务器它的缓存页面何时将过期。HTTP1.1规范中新定义的头信息Cache-Control可以通知浏览器不缓存任何页面。当点击后退按钮时,浏览器重新访问服务器已获取页面。如下是使用Cache-Control的基本方法:

1) no-cache:强制缓存从服务器上获取新的页面

2) no-store: 在任何环境下缓存不保存任何页面

HTTP1.0规范中的Pragma:no-cache等同于HTTP1.1规范中的Cache-Control:no-cache,同样可以包含在头信息中。

2、CSS和JS文件

<link rel="stylesheet" href="../css/register.css"/>
<script src="../scripts/register.js"></script>
改成
<link rel="stylesheet" href="../css/register.css?v=20161020"/>
<script src="../scripts/register.js?v=20161020"></script>

就是只要在每次修改后改一下版本号即可

这样每次修改后都要改,有没有自动加版本号的东西,估计有,如果是JSP和php可以通过脚本
自动生成,如果是纯html也可以通过document.write,或者用动态加载JS的框架啥的。

3、chrome:

现在新版的Chrome在developer Tools(F12调出来)的Settings(右下角有个齿轮标志)中有了个Disable cache选项。勾了便可以。(只适用于咱们开发人员 老板们不懂,所以还是代码清理缓存吧)

4、在body元素里边添加class=“no-cache”这个类,第三个方法是专门针对清除Safari浏览器缓存的

if (isSafari()) {
$(window).bind("pageshow", function (event) {
if (event.originalEvent.persisted && $('body').hasClass("no-cache")) {
document.body.style.display = "none";
window.location.reload();
}
});
}

function isSafari() {
if (navigator.userAgent.indexOf("Safari") > -1) {
return true;
}
return false;
}

工作之余 用博客记录自己 希望有能帮助到各位看官
如有错误或不全面的地方望各位能提点一二和留下宝贵意见

### 三级标题:Vue 前端更新与缓存清除方法 在 Vue 项目中,前端更新后由于浏览器缓存机制,可能会导致用户无法及时获取最新的资源文件。为了解决这一问题,可以采用多种方式来强制清除缓存,确保用户访问的是最新的版本。 #### 1. 在构建文件名中添加时间戳 通过修改 `vue.config.js` 文件,在输出的文件名中添加时间戳,确保每次构建生成的文件名不同,从而绕过浏览器缓存。例如: ```javascript let timeStamp = new Date().getTime(); module.exports = { filenameHashing: false, configureWebpack: { output: { filename: `js/[name].${timeStamp}.js`, chunkFilename: `js/chunk.[id].${timeStamp}.js`, }, }, css: { extract: { filename: `css/[name].${timeStamp}.css`, chunkFilename: `css/chunk.[id].${timeStamp}.css`, }, }, } ``` 这种方法通过动态生成文件名,确保浏览器每次都会加载最新的资源文件[^1]。 #### 2. 配置服务器端缓存策略 在服务器端,可以通过配置 HTTP 响应头来控制缓存行为。例如,在 Nginx 中,可以针对 HTML 文件设置 `Cache-Control` 为 `no-cache` 或 `no-store`,以避免缓存: ```nginx server { listen 80; server_name yourdomain.com; location / { try_files $uri $uri/ /index.html; root /yourdir/; index index.html index.htm; if ($request_filename ~* .*\.(?:htm|html)$) { add_header Cache-Control "private, no-store, no-cache, must-revalidate, proxy-revalidate"; } } } ``` 这样可以确保 HTML 文件不会被浏览器缓存,从而在每次访问时都能获取最新的内容[^3]。 #### 3. 前端页面缓存管理 在 Vue 项目中,如果使用了页面缓存(例如 Vue 的 `keep-alive` 组件),需要特别注意缓存策略。在菜单管理中配置页面是否缓存时,确保组件的 `name` 属性唯一,并与菜单配置保持一致。如果路由参数发生变化,页面不会自动刷新,需要手动触发重新加载或切换路由以更新内容[^2]。 #### 4. 用户端手动刷新 尽管可以通过上述方法避免缓存问题,但在某些情况下,用户可能仍然需要手动刷新页面以获取最新版本。因此,在更新发布后,建议通知用户进行一次页面刷新操作。 ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值