Nginx匹配具有md5哈希值的rails资产

时间:2014-02-07 18:17:51

标签: ruby-on-rails nginx md5 sprockets

我的rails应用程序有一些文件从rails资产管道中排除,因此文件名中没有md5哈希。但我想为链接器预编译的所有资产添加1y的max-age标头。我怎样才能有选择地只在由链轮预编译的资产上设置max-age标头。

我想到的一件事是,因为md5哈希总是33个字符(我通过检查哈希的长度来测试它),也许我可以在文件名中的短划线后有一个匹配33个字符的正则表达式。谁能告诉我怎么做?其他想法?

以下是示例文件名。

application-cb61c25ef6120a3100f6c5774c26e2ad.js  
application-cb61c25ef6120a3100f6c5774c26e2ad.js.gz  
arrows-df2013a3aca5b91d70cf0aac7a5d6994.png  
ip-icon-731b22bd05d1c61d4f0074e69f942707.png  

修改
我为nginx conf提出了类似下面的内容:

location ~ ^/assets/.+-[0-9a-f]{32}\.(jpg|jpeg|gif|css|png|js|ico|svg|woff|ttf|eot|map)(.gz)? {
  expires 1y;
  add_header Cache-Control public;

  add_header ETag "";
  break;
}

0 个答案:

没有答案