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

alucardpj · December 14, 2011 · Last by hooopo replied at February 04, 2012 · 3785 hits

纯新手问题,我看 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 在文件名里加上数值串,应该也就可以了。

You need to Sign in before reply, if you don't have an account, please Sign up first.