1
andy12530 2013-12-22 22:58:17 +08:00 1
云存储中使用?v=1.01不能更新文件??
楼主说的云存储是CDN吧,访问CDN文件query串不同,如果没有命中,必须回源啊。 使用?v=1.01 这样的方式更新版本号没有问题。 /js/1.0.1/js.js 这样的方式来做版本号会不会有问题呀,如果有一个目录名称叫1.0.1,那这到底是文件路径还是版本号呢? 目前有一些站点是 : xxxx/name.js 对应的文件url就是: xxxx/name.__122132131__.js。 中间数字部分可以是当前的时间戳,也可以是文件内容的hash值。 如果是时间戳对应的rewrite规则: rewrite '^(.*).__(\d{1,})__.(js|ico|gif|jpg|jpeg|png|css|swf|html?)$' /$1.$3 break; |
2
qiayue OP @andy12530
国内的七牛、又拍云不都是号称云存储嘛。 可能是因为全国不同节点缓存问题,我更换 v= 后面的版本号不能及时更新。 所以就想用把版本号放到文件路径里去的方式来强制更新,对于CDN来说,这是另一个文件了,当然就不存在缓存更新问题。 因为只是 css、js 文件用这种形式来做,所以几乎不可能遇到 1.0.1 目录问题。 |
3
andy12530 2013-12-23 11:54:36 +08:00
@qiayue
都已经说过了,?v=xxx 就是为了解决缓存问题,才加的版本号,除非v=xxx已经被命中过,CDN才会缓存住。 把版本号放在路径里,不可取,都说过了,会有可能遇到 1.0.1这个目录,而且这个目录是个合法的目录。如果你这么做,以后调试会很麻烦。 你用这个方案吧: xxxx/name.js 对应的文件url就是: xxxx/name.__122132131__.js rewrite '^(.*).__(\d{1,})__.(js|ico|gif|jpg|jpeg|png|css|swf|html?)$' /$1.$3 break; 这个符合你的要求。 |