Rails rails 生成的页面源码中 js/css 后面都会带上随机字串是怎么回事?

alucardpj · 2011年12月14日 · 最后由 hooopo 回复于 2012年02月04日 · 3791 次阅读

纯新手问题,我看 rails 生成的页面源码中 js/css 链接后面都会带上随机字串,如:

<link href="/themes/redmine/stylesheets/application.css?1268079058> 
<script src="/javascripts/application.js?1322400085" type="text/javascript">

这些随机字串是什么意思?

另一方面,是不是看页面源码中带有这种随机字串就可以判断是由 rails 生成的呢?

后面这个数字是有文件的创建日期转换而来的,一般我们会给 js, css 设置浏览器缓存,而浏览器缓存的标准是根据 url 来的,所有如果不带上这个,当服务器上面文件更新后,用户浏览器上面依然还是老的东西,加了这窜时间戳以后就可以解决问题

感谢@huacnlee,进一步的问题,这个特性是 rails 框架特有的吗?其他的框架有没有类似的特性?

如果是 rails3.1 的话,这个是由 rails 中的 sprokets 来处理的,会在文件名中加数值串,而不是扩展名后加问号,实际上那个数值串是对文件内容做了个 md5 类似的处理生成的。所以 sinatra 也可以集成的,很简单。 如果其它语言的话,上线前对所有 assert 做个 hash 在文件名里加上数值串,应该也就可以了。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号