怎样获取最新版的javascript文件,解决被浏览器缓存的问题
假设有一个js文件(以jquery为例),在服务器上的URL地址为:../js/jquery.js 。
当某天jquery版本更新了,用最新版的jquery文件覆盖了原来旧版的jquery文件。
这时,在打开引用了此js文件的网页时,有可能引用的还是旧版,这是因为浏览器有缓存,它缓存了旧版的jquery文件。
浏览器缓存文件是以完整的URL来缓存的,也就是说,当浏览器遇到一个与之前完全一致的URL请求时,就有可能使用之前缓存下来的文件,而不是向服务器去请求文件。当然,缓存是有时效的,超过了一定的时间后,缓存将会消失。
既然是以完整的URL来缓存文件的,那么我们就可以使用不同的文件名来访问更新后的文件。
一种解决方法是,将版本号写在文件名里,比如,可将以上的jquery.js的文件名改为 jquery-3.3.0.js,其中,3.3.0就是jquery的版本号。在前端引用时,就这样写:
<script src="../js/jquery-3.3.0.js"></script>
当某天jquery的版本更新为3.3.1了,我们就将文件名修改为jquery-3.3.1。前端引用的代号同时修改为:
<script src="../js/jquery-3.3.1.js"></script>
另一种解决方法是,不修改文件名,而是将版本号放在URL的query参数里,比如这样写:
<script src="../js/jquery.js?ver=3.3.0"></script>
其中ver=3.3.0就是版本号。当jquery的版本号更新为3.3.1之后,就改写为这样:
<script src="../js/jquery.js?ver=3.3.1"></script>
怎样获取最新版的javascript文件,解决被浏览器缓存的问题的更多相关文章
- 利用gulp解决微信浏览器缓存问题
做了好多项目,这次终于要解决微信浏览器缓存这个令人头疼的问题了.每次上传新的文件,在微信浏览器中访问时,总要先清除微信的缓存,实在麻烦,在网上搜罗了很多解决办法,终于找到了方法:利用gulp解决缓存问 ...
- 解决IE浏览器缓存导致AJAX请求数据异常
IE10浏览器会把AJAX请求的数据都缓存下来,然后每次想去刷新数据时发现数据都是一样的,于是导致数据显示异常. 解决方法: 在页面<head>标签里,加上以下声明: <!-- 解决 ...
- 让浏览器重新下载css文件,解决不刷新缓存的问题
网站页面源代码中的css文件和js文件后面带一个问号,后面跟着一连串数字或字符,问号起不到实际作用,仅能当作后缀,如果用问号加参数的方法,可以添加版本号等信息 它的作用有:1.作为版本号,让自己方便记 ...
- 解决微信浏览器缓存站点入口文件(IIS部署Vue项目)
最近开发的微信公众号项目中(项目采用Vue + Vux 构建,站点部署在IIS8.5上),遇到个非常奇葩的问题,发布站点内容后,通过微信打开网址发现是空白页面(后来验证是微信浏览器缓存了入口文件-in ...
- js文件改变之后浏览器缓存问题怎么解决?
升级了js文件,很多页面都引用了这个文件,需要主动清除浏览器缓存才会生效,有没有什么办法可以不主动清除就可以? 修改文件名,加上版本号,或 xxx.js?v=0.101
- 解决修改css或js文件后,浏览器缓存未更新问题
问题描述:最近在上线新版本项目的时候,发现有的用户的操作还是调用的老版本JS里面的内容,这样就造成原来新的JS里面加上的限制不能限制用户的操作,从而导致用户可以重复操作. 问题产生原因: 如果在用户之 ...
- JavaScript中解决多浏览器兼容性问题的方案
一.document.formName.item(”itemName”) 问题 问题说明:IE下,可以使用 document.formName.item(”itemName”) 或 document. ...
- PHP输出图片文件,实现浏览器缓存机制
$ETag = '"'.md5($file).'"'; if(env('HTTP_IF_NONE_MATCH') === $ETag){ header ( 'ETag: '.$ET ...
- 浏览器中用JavaScript获取剪切板中的文件
本文转自我的个人网站 , 原文地址:http://www.zoucz.com/blog/2016/01/29/get-file-from-clipboard/ ,欢迎前往交流讨论 在网页上编辑内容 ...
随机推荐
- [翻译] MAThemeKit
MAThemeKit https://github.com/mamaral/MAThemeKit MAThemeKit provides iOS developers the ability to c ...
- 使用RQShineLabel
使用RQShineLabel https://github.com/zipme/RQShineLabel 最终效果: 源码: // // RootViewController.m // UseText ...
- 【运维】linux命令查看端口占用情况,杀死进程,后台启动进程
1.查看端口占用情况:> lsof -i:port COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME ...
- HBase编程 API入门系列之create(管理端而言)(8)
大家,若是看过我前期的这篇博客的话,则 HBase编程 API入门系列之put(客户端而言)(1) 就知道,在这篇博文里,我是在HBase Shell里创建HBase表的. 这里,我带领大家,学习更高 ...
- Xcode中模拟器慢
取消下图中框框打勾
- BZOJ 1013 球形空间产生器sphere 高斯消元
题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1013 题目大意: 有一个球形空间产生器能够在n维空间中产生一个坚硬的球体.现在,你被困 ...
- Modal实现页面跳转和控制器数据传递
一.Model跳转的实现 1.新建工程 2.新建View控制器和导航控制器 (1)为拖控件,两个view一个navigation; 如图: (2)view的“GotoTwo”按键添加Segues到Na ...
- 随手练——HDU Safe Or Unsafe (小根堆解决哈夫曼问题)
HDU 2527 :http://acm.hdu.edu.cn/showproblem.php?pid=2527 哈夫曼树,学完就忘得差不多了,题目的意思都没看懂,有时间复习下,看了别人的才知道是怎么 ...
- python过滤文件中特殊标签
Beautiful Soup Beautiful Soup 是用Python写的一个HTML/XML的解析器,它可以很好的处理不规范标记并生成剖析树(parse tree). 它提供简单又常用的导航( ...
- 修改Xcode工程名称
概述 有的时候需要在现有的项目上面开发一个新的项目,如果新建工程的话,就比较麻烦了,所以一般是直接现有的工程上面直接修改名字步骤如下: 1.修改工程名字 在这里修改完之后,会弹出一个对话框,点击Ren ...