`
shaomeng95
  • 浏览: 222560 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

[想法]为引用静态资源的url添加版本号,解决版本发布后的浏览器缓存问题

阅读更多

       在日常的工作中,我们经常会遇到页面文件(html,jsp等)中引用的js,css,图片等被修改后,而浏览器依然缓存着老版本的文件,客户一时半会看不到修改后的效果,同时也给生产环境的版本发布带来了一些问题。

 

       通常的解决方法就是在资源后跟上随机的参数或者版本号,日期等,来刷新浏览器的缓存使其到服务器上重新下载这些文件,如淘宝:http://a.tbcdn.cn/p/fp/2010c/js/fp-direct-promo-min.js?t=20111210.js

 

 

       但是在日常的研发过程中,不可能给这些url逐个加上参数,这样太笨拙了。于是我有如下想法:

跟SVN等版本工具配合,给这些资源的url加上该资源的修订号,如

<script type="text/javascript" src="/script/function.js?version=182"></script>

 

 

     这样做有两点好处:

  1. 在代码文件提交之前,给代码中引用的资源添加版本号,无需人工手动添加,方便规范;
  2. 避免一刀切的方式,把所有引用的资源都每次都生成随机参数,对于某些没有更新的资源,没有必要强制浏览器重新请求服务器。

    实现思路:

          解析指定文件(如html,jsp)中的相关标签(link,script等),找到引用的资源url,使用svnkit获取资源对应的修订号并添加到资源url中作为参数。

  

    注:在资源url上添加参数并不能解决所有浏览器的缓存问题,毕竟不同的浏览器的缓存策略不同,但通常还是 比较好的解决方案. 相应的工具正在开发中,敬请期待...

         

 

分享到:
评论
2 楼 aNd1coder 2011-11-19  
and1coder#gmail.com 如果可以的话,邮件交流下:D
1 楼 aNd1coder 2011-11-19  
楼主,你的工具进展如何呢?最近也一直在寻求这样一个工具,希望楼主分享下实现过程,谢谢!

相关推荐

    web项目页面缓存清除,不用每次刷新浏览器

    3. **版本控制**:通过在静态资源URL后面添加版本号或时间戳,例如`script.js?v=1.0`,每次更新时改变版本号,浏览器会认为这是一个新的资源,从而强制重新加载。 4. **浏览器的开发者工具**:大多数现代浏览器的...

    在js或css后加?v= 版本号不让浏览器缓存

    这样,即使用户有旧版本的文件缓存,浏览器也会根据不同的版本号识别为新的资源,从而强制下载最新版本。 使用版本号标记有两种可能的情况: 1. **服务端动态生成**:某些情况下,js或css文件可能不是静态文件,...

    浏览器缓存问题5个.docx

    1. **更新URL**:通过在URL中添加查询字符串或版本号的方式,强制浏览器重新下载资源。 2. **使用强缓存验证**:利用ETag机制确保资源的唯一性和一致性。 3. **清除缓存**:提示用户定期清除浏览器缓存,以避免加载...

    HTML页面自动清理js、css文件的缓存(自动添加版本号)

    为了解决这个问题,开发者通常有两种策略:一是手动清理浏览器缓存,二是通过在文件URL后面添加版本号来强制浏览器重新加载。本文将详细介绍如何通过自动化的方式来实现第二种策略,即自动添加版本号。 首先,我们...

    浏览器缓存

    对于静态资源,如CSS和JavaScript文件,可以将文件名后加上版本号,例如`style-v1.2.css`。当文件内容更新时,只需更新版本号,浏览器会识别为新的资源并下载。 6. **HTTP缓存策略**: 可以利用HTTP的ETag(实体...

    利用 filter 机制给静态资源 url 加上时间戳,来防止js和css文件的缓存问题

    为了解决这个问题,通常会采用在静态资源的URL后面添加一个时间戳的方式,以此强制浏览器或代理服务器去加载最新的资源。 Filter机制是Java Servlet技术中用于拦截客户端请求和服务器响应的一种方式。通过实现...

    浏览器缓存问题处理

    在静态资源URL后面添加版本号,如`/test.js?ver=123456`。每次更新资源时,版本号改变,浏览器会认为是新资源而重新下载。 2. 设置请求缓存机制: 对于需要实时更新的文件,可以在HTTP请求头中设置Cache-Control...

    SpringMVC访问静态资源

    为了强制浏览器刷新静态资源,通常会在资源URL后面添加一个版本号或哈希值。Spring MVC可以通过动态生成这样的URL,例如通过`@Webjars`库或自定义拦截器实现。 总结来说,Spring MVC提供了多种方式来管理和优化静态...

    js、css、img等浏览器缓存问题的2种解决方案

    更推荐的方法是使用版本号控制,通过在URL中添加一个固定的版本号来标识资源的更新。在发布新版本时,增加版本号。例如: ```html &lt;script type="text/javascript" src="/js/test.js?v=&lt;%=v%&gt;"&gt; ``` 在这个例子中,`...

    SpringSecurity静态资源.rar

    5. **静态资源版本控制**:为了防止缓存问题和提高安全性,通常会在静态资源URL中添加版本号或时间戳,确保浏览器总是获取最新的资源。 6. **使用Spring Boot**:在Spring Boot应用中,Spring Security与Spring ...

    springmvc静态资源访问

    - **版本控制**:为静态资源加上版本号,避免缓存问题导致的新版本无法覆盖旧版本的情况发生。 #### 五、总结 正确配置静态资源访问不仅可以提升用户体验,还能减轻服务器压力。通过使用Spring MVC提供的工具和...

    vue.config.zip

    除了手动配置外,uni-app还提供了插件机制,如`uni-app`官方的`@dcloudio/uni-asset-plugin`,它可以自动为静态资源添加版本号。安装并使用该插件的方法如下: ```bash npm i @dcloudio/uni-asset-plugin -D ``` ...

    狂神说SpringSecurity静态资源.rar

    5. **静态资源版本控制**:为了强制浏览器获取最新的资源,通常会在静态资源URL后添加版本号或者时间戳。SpringSecurity可以配合Spring MVC实现动态更新资源版本。 6. **过滤器链**:SpringSecurity的过滤器链对...

    Spring Boot Web 静态文件缓存处理的方法

    我们可以用版本号来解决这个问题,就是在静态资源后面加上一个版本号,当资源发生变化时将版本号也改变,这样就不会有问题了。 五、使用版本号的方法 使用方式如下:${version!}" rel="external nofollow" /&gt; ...

    狂神说javaweb实战静态资源.rar

    - 版本控制:通过URL路径、查询参数或者文件名附加版本号来缓存管理和更新。 - 压缩合并:减少HTTP请求次数,提高加载速度,可通过工具如Webpack、Gulp等实现。 3. **静态资源的访问**: - 直接访问:浏览器...

    你修改了样式,却要我手动清除游览器缓存,这是BUG!

    " 这个标题所指出的问题正是这种体验的反映,即开发者在更新静态资源(如CSS或JavaScript文件)后,由于浏览器缓存机制,用户可能需要手动清理缓存才能查看更新。这显然不是理想的用户体验,也不符合高效开发的要求...

    页面缓存处理方案文档,解决前后端页面缓存

    为了实现更新后自动生效,通常采用版本号或时间戳来更新文件引用。例如: ```html &lt;script src="../scripts/aa.js?v=2019XXXXX"&gt;&lt;/script&gt; ``` 当文件被修改时,只需更改版本号(这里用日期表示),浏览器会...

    Laravel开发-laravel-asset-version

    这个功能的主要目的是解决浏览器缓存问题,确保用户在你更新前端资源时获取到最新的版本,而不是依赖于浏览器缓存的旧版本。接下来,我们将深入探讨这一特性。 1. **浏览器缓存与版本控制**: 浏览器为了提高加载...

    SpringBoot静态资源处理共5页.pdf.zip

    为了强制浏览器刷新静态资源,Spring Boot支持在静态资源URL后面添加版本号。这可以通过`spring-boot-devtools`中的`ResourceTransformer`实现,或者在Maven或Gradle构建时添加资源指纹。 7. **预编译的静态资源**...

Global site tag (gtag.js) - Google Analytics