这是一个老问题缓存以及文件,但可以肯定的是,当你更新了一些文件进行一些修改的最后一个版本将送达。例如,众所周知,你可以将一个get变量追加到文件uri中,但是你失去了所有的缓存优势,这些文件永远不会被缓存,呵呵! 就目前而言,我发现trought一些网页建议最好的办法是:如何巧妙地缓存css&javascript文件?
- 附加到期的相关信息在htaccess的,例如:ExpiresByType文/ JavaScript的 “进入加7天”的
- 为文件名+要求“ - ” + lastModifTimestamp(src)+ fileExtension,例如:'dir/usualfilename-345678.js'。该lastModifTimestamp由 服务器脚本,如PHP filemtime($ SRC)设置
- 然后在htaccess的,添加改写 'DIR/usualfilename-2345678.js' 到 'DIR/usualfilename.js' 一个重写规则:
RewriteRule (.+)-[0-9]+(\.(js|css))$ $1$2 [L]
的优点是,你永远不必改变你使用的文件名,甚至如何巧妙地或古怪的访问者浏览器的行为,缓存是有效的,你肯定它得到了更新的文件,如果修改。
然后在我的dojoConfig(dojo 1.7+)中,例如我喜欢所有模块路径后缀为最后一个修改时间戳(我的dojo配置是用dinamically写入PHP)的包。我发现的唯一方法是使用别名属性:我必须别名所有包的文件,问题是它很重,然后如果我的包中有100个模块,即使我需要,我也需要100个已声明的别名只有3个文件...它不是很“动态”。 cachebust属性很近,但它适用于所有文件,并且如上所述,它存在问题。
我的问题是:
- 你知道一个更好的办法来管理缓存和更新的文件作为 在dojoConfig mentionned
- ,有没有对 应用此操作的一些包文件的一些聪明的方法?
谢谢你的任何相关信息!
感谢您的回复,1)是的,我使用这种方式,完美的工作,使用dojo AMD加载程序和模块路径,uris和别名时遇到了困难... 2)没有弄清楚这个解决方案, ,它看起来有点沉重,我更喜欢第一个解决方案,因为我只需要上传修改后的文件 – dmidz