缓存好文件是一个老问题,但要确保在您更新某些文件的一些修改时提供最后一个版本。例如,众所周知,您可以将诸如时间戳之类的 get 变量附加到文件 uri 但您失去了所有缓存优势,文件将永远不会被缓存,呵呵!目前,我发现一些网络建议的最佳方法是:
- 在 htaccess 中添加过期信息,例如:ExpiresByType text/javascript "access plus 7 days"
- 请求文件名+'-'+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+)中,我有一个包,我喜欢所有模块路径都以最后一个modif时间戳为后缀(我的dojo配置是用PHP编写的)。我发现的唯一方法是使用 aliases 属性:我必须为所有包的文件设置别名,问题是它很重,那么如果我的包中有 100 个模块,即使我需要,我也需要 100 个声明的别名只有 3 个文件……它不是很“动态”。cachebust 属性很接近,但它适用于所有文件,并且如上面所解释的那样存在问题。
我的问题是:
- 您知道管理缓存和更新文件的更好方法吗?
- 在 dojoConfig 中,是否有一些聪明的方法可以将此操作应用于某些包文件?
感谢您提供任何信息!