Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

在我们对网页进行修改后,如何保证用户在访问时看到的是最新的效果 #2

Open
GitHuboooSHY opened this issue May 28, 2019 · 1 comment
Assignees
Labels
question Further information is requested

Comments

@GitHuboooSHY
Copy link
Contributor

一般我们在对网页进行代码或者链接资源修改后,需要清除浏览器缓存,再刷新页面才能看到最新、正确的效果。但是,对清除缓存这一操作不熟悉的用户,就无法看到正确的页面效果,这个问题怎么解决?

@turkyden
Copy link
Collaborator

turkyden commented May 30, 2019

要解决这个问题,我们需要先理解浏览器的缓存机制。

我们都知道, 我们在访问 Web 网站时,在浏览器里输入 URL 地址,就会发起一个 http 请求,服务器里面的程序就会做出响应,将服务器上的文件发送到客户端(浏览器),客户端将这些文件(html,css, js)解析并完成页面渲染。

浏览器为了优化页面打开速度,会对静态资源做缓存处理,也就是首次会发起请求,后面不再发起请求。

因此,解决这些问题往往会在静态资源后面加上一个时间戳

时间戳

在静态资源 URL 后面紧跟着一个 ?v=1556560823426 版本戳:

<link rel="stylesheet" href="/spa/portal/public/index.css?v=1556560823426">
<script type="text/javascript" src="/spa/portal/public/index.js?v=1556560823426"></script>

浏览器在加载页面的时候,就能够识别这个资源是否是已改动的,并从新发起 http 请求获取。

目前,我们开发网站的模式还是以存手工的方式为主。因此,只能手动在静态资源(js,css)后面加一个时间戳。有时候我们一天不止修改发布一版,那时间戳肯定不行的,得想一个与上次不一样的随机数作为后缀。

但是,目前前端开发已经进入自动化工程化成熟时期,grunt, gulp, webpack 等构建和打包工具会对这一流程进行统一处理,统一加入一个唯一的哈希值,我们只需要专注以页面的设计和开发就好了,这些工具解放了我们的双手,让我们腾出更多的时间完成富有创意的活动

人与动物最重要的区别在于,会发明和使用工具

@GitHuboooSHY

@turkyden turkyden added question Further information is requested and removed question Further information is requested labels Jun 12, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question Further information is requested
Projects
None yet
Development

No branches or pull requests

3 participants