Dhr*_*hak 15 javascript versioning
如果我决定使用javascript或css文件的last_modified_time,并使用它的unix时间戳作为修改文件时胸围缓存的名称中的键.以下两种做法有什么区别?filename是:my_script.js,时间戳是:1321951817
1/File包含在:
<script type="text/javascript" src="http://example.com/js/my_script.js?v=1321951817"></script>
因此,每次v
更改时,查询字符串参数都会创建一个新的缓存.
2 /文件包含为:
<script type="text/javascript" src="http://example.com/js/my_script.1321951817.js"></script>
文件名随每次修改而变化,重写规则删除时间戳并将请求的URL指向my_script.js
3/更新:基于以下答案的更多方法:文件被重命名并包括在:
<script type="text/javascript" src="http://example.com/js/my_script.1321951817.js"></script>
文件名被更改并且使用NO REWRITE RULE.
问题:这两种技术本质上是否相同,或者使用查询字符串参数而不是直接文件名有任何优点/缺点.
Mun*_*ter 22
使用更新的查询字符串是一个糟糕的解决方案.看看Steve Souders对此有何看法:http://www.stevesouders.com/blog/2008/08/23/revving-filenames-dont-use-querystring/
理想的方法是重命名文件本身.有些人更喜欢使用上次修改日期的时间戳,我认为这是一个问题.
在现代Web开发中,您确实需要尽可能优化页面,这意味着将css和javascript组合成单个文件,这些文件是minfied.这意味着您在流程中引入了构建步骤,并且文件的最后修改时间始终位于您的上一次构建中.如果将其设置为文件名,则基本上会破坏用户缓存,有时则不需要.
我建议将文件重命名为其内容的md5总和.这样您就可以一直进行新的构建,但只有在内容发生变化时才会更改文件名.这使您的文件名成为内容的标识符.使用此功能,您可以在所有静态内容上设置远期未来过期标头,并且不再担心它.
我建议使用构建系统,因为这个工作流程很快.我的公司刚刚开源,在很多其他优化您的网页的事情中做到这一点:https://github.com/One-com/assetgraph-builder 还有许多其他的构建工具也是如此.环顾四周,找到最适合您的开发设置的那个.
归档时间: |
|
查看次数: |
19979 次 |
最近记录: |