假设有一个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文件,解决被浏览器缓存的问题的更多相关文章

  1. 利用gulp解决微信浏览器缓存问题

    做了好多项目,这次终于要解决微信浏览器缓存这个令人头疼的问题了.每次上传新的文件,在微信浏览器中访问时,总要先清除微信的缓存,实在麻烦,在网上搜罗了很多解决办法,终于找到了方法:利用gulp解决缓存问 ...

  2. 解决IE浏览器缓存导致AJAX请求数据异常

    IE10浏览器会把AJAX请求的数据都缓存下来,然后每次想去刷新数据时发现数据都是一样的,于是导致数据显示异常. 解决方法: 在页面<head>标签里,加上以下声明: <!-- 解决 ...

  3. 让浏览器重新下载css文件,解决不刷新缓存的问题

    网站页面源代码中的css文件和js文件后面带一个问号,后面跟着一连串数字或字符,问号起不到实际作用,仅能当作后缀,如果用问号加参数的方法,可以添加版本号等信息 它的作用有:1.作为版本号,让自己方便记 ...

  4. 解决微信浏览器缓存站点入口文件(IIS部署Vue项目)

    最近开发的微信公众号项目中(项目采用Vue + Vux 构建,站点部署在IIS8.5上),遇到个非常奇葩的问题,发布站点内容后,通过微信打开网址发现是空白页面(后来验证是微信浏览器缓存了入口文件-in ...

  5. js文件改变之后浏览器缓存问题怎么解决?

    升级了js文件,很多页面都引用了这个文件,需要主动清除浏览器缓存才会生效,有没有什么办法可以不主动清除就可以? 修改文件名,加上版本号,或 xxx.js?v=0.101

  6. 解决修改css或js文件后,浏览器缓存未更新问题

    问题描述:最近在上线新版本项目的时候,发现有的用户的操作还是调用的老版本JS里面的内容,这样就造成原来新的JS里面加上的限制不能限制用户的操作,从而导致用户可以重复操作. 问题产生原因: 如果在用户之 ...

  7. JavaScript中解决多浏览器兼容性问题的方案

    一.document.formName.item(”itemName”) 问题 问题说明:IE下,可以使用 document.formName.item(”itemName”) 或 document. ...

  8. PHP输出图片文件,实现浏览器缓存机制

    $ETag = '"'.md5($file).'"'; if(env('HTTP_IF_NONE_MATCH') === $ETag){ header ( 'ETag: '.$ET ...

  9. 浏览器中用JavaScript获取剪切板中的文件

    本文转自我的个人网站  , 原文地址:http://www.zoucz.com/blog/2016/01/29/get-file-from-clipboard/  ,欢迎前往交流讨论 在网页上编辑内容 ...

随机推荐

  1. Navicat 连接 Oracle数据库并,导入数据泵(.dmp)

    如有什么质疑的地方,希望可以和大家一起探讨,共同进步. 一.安装方法: 1.首先下载Navicat Premium和Oracle Database Oracle Database官网下载地址:http ...

  2. C语言指针数组(每个元素都是指针)

    转载:http://c.biancheng.net/cpp/html/3246.html 注意:数组指针的区别 如果一个数组中的所有元素保存的都是指针,那么我们就称它为指针数组.指针数组的定义形式一般 ...

  3. MAC电脑安装svn客户端cornerstone

    个人感觉在mac上最好用的svn客户端就是cornerstone,公司客户端也统一使用这个 sudo spctl --master-disable 这条命令作用就是使得mac运行安装任何来源App,不 ...

  4. MVC框架以及实例

    MVC框架 MVC(model,view,controller),一种将业务逻辑.数据.界面分离的方法组织代码的框架.在改进界面及用户交互的同时,不需要重写业务逻辑.MVC将传统的输入.处理和输出分离 ...

  5. Attribute+Reflection,提高代码重用

    这篇文章两个目的,一是开阔设计的思路,二是实例代码可以拿来就用. 设计的思路来源于<Effective c#>第一版Item 24: 优先使用声明式编程而不是命令式编程.特别的地方是,希望 ...

  6. Windows API 查找窗体,发送Windows消息

    最近项目中需要做Windows消息截获操作,在网上找了一些资料. public class WindowsAPI { /// <summary> /// 回调函数代理 /// </s ...

  7. 打通版微社区(4):微信第三方服务部署——JSP的IIS部署

    写在前面: 本机环境2008R2.tomcat8 网上搜了很多JSP的IIS部署,内容大部分是相近的,这些文章最早出现在2012的样子.大概的原理就是通过ISAPI方式对IIS进行扩展(这个扩展是to ...

  8. 【Git】创建一个空分支

    1 创建一个分支 使用参数 --orphan,这个参数的主要作用有两个,一个是拷贝当前所在分支的所有文件,另一个是没有父结点,可以理解为没有历史记录,是一个完全独立背景干净的分支. 参考git的帮助文 ...

  9. 模拟代理安装---User-Agent Switcher for Chrome安装

    模拟代理安装: 1. 百度User-Agent Switcher for Chrome进行下载 2. 直接安装 1. 进入扩展程序界面 2. 拖动插件进行安装 3.安装成功后会显示一个插件标志,里面可 ...

  10. ONOS的安装

    ONOS的简介 ONOS(Open Network Operating System)开放网络操作系统,由 ON.Lab 使用 Java 及 Apache 实现发布的首款开源的SDN网络操作系统. O ...