询问一下,静态资源清除缓存的办法,目前使用 grunt

2014-11-03 12:05:28 +08:00
 taoche
想请教一下有经验的大大,前端静态资源如何做到 不修改文件的情况下给 js css 文件加时间戳/MD5戳。

目前做法是 用 sea.js 的map 配置文件加版本号,但是它自身config.js 不能做到清除缓存。
之前也用grunt的 rev + usemin 做过,但是替换文件名 在根据替换后的文件名做到修改html文件的引用地址,个人感觉过于危险,不好管理。

搜了一遍grunt的插件库,也没有发现 '.js?v=1010' 这些不修改 js css文件名 而单独修改html的引用的办法。

麻烦有经验的同学说下解决办法。谢谢!
6541 次点击
所在节点    程序员
19 条回复
takatost
2014-11-03 13:31:56 +08:00
百度FIS
taoche
2014-11-03 13:39:32 +08:00
@takatost 这个我知道,但是没办法改用FIS
yakczh
2014-11-03 13:59:23 +08:00
如果测试环境测试完成了,传到线上服务器,是先打包后再传到线上,还是传到线上再打包?
ccccccc
2014-11-03 14:06:24 +08:00
用这个 grunt replace
lisposter
2014-11-03 14:08:00 +08:00
usemin 不是可以替换 html 中引用的么

我司前端产品就这么弄的,已经跑很久了 没问题
taoche
2014-11-03 14:14:44 +08:00
@lisposter 引用文件的文件名要进行修改。。 a.js -> a.xxxxxx.js -> html->修改静态引用。
lisposter
2014-11-03 14:18:29 +08:00
@taoche 是的呀 就是这样
robertlyc
2014-11-03 14:19:27 +08:00
rails asset pipeline
chshouyu
2014-11-03 14:29:10 +08:00
usemin 好好研究一下

http://kanfang.chshouyu.com/#/home

可以参考
taoche
2014-11-03 14:35:33 +08:00
@lisposter 我是不想不修改 css js文件的情况下。
taoche
2014-11-03 14:36:08 +08:00
@chshouyu 不修改 css js文件名的情况下。
nigelvon
2014-11-03 14:44:02 +08:00
后面自动加版本号或者时间戳吧 比如jquery.js?v=1.0.0
taoche
2014-11-03 14:50:08 +08:00
@nigelvon 是的,但是我的项目是前后端分离的,时间戳不能由后端产生。
andy12530
2014-11-03 17:56:23 +08:00
@taoche 有改动的话,将改动文件的版本号时间写入一个config.js里,然后将文件版本号输入在页面底部。

seajs加载文件时候,在loadJS loadCSS的函数里,把文件的 URL 拼接一下。

abc.js => abc.__时间戳__.js
lisposter
2014-11-03 20:29:19 +08:00
@taoche 那更简单了 https://www.npmjs.org/package/grunt-htmlrefs 有个叫 buildNumber 的选项,把你算好的版本号,时间戳也好,md5 也好 传进去就好了


不过,如果你的静态文件是放 cdn 的话,还是改文件名的好
yakczh
2014-11-03 20:53:19 +08:00
如果js/css文件修改了,这个打包过程是自动的,还是手动的?
taoche
2014-11-04 00:27:16 +08:00
@yakczh 自动
taoche
2014-11-04 00:27:26 +08:00
@lisposter 谢谢 我看看
taoche
2014-11-04 00:31:56 +08:00
@andy12530 sea.js 本身的config.js 没办法清除缓存。 应该是这样吧。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/143594

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX