我有许多部署应用程序的环境。在其中两个中,我为资产部署了以下配置:
config.assets.enabled = true
config.assets.compress = false
config.assets.compile = true
config.assets.precompile = false
config.assets.digest = true
config.assets.debug = false
config.serve_static_assets = true
我的applicaton.js,在其上编译了许多.js文件,没有获得指纹,因此我不会对已经缓存它的客户提供更改。
然后,该网页会为除application.js
我在哪里可以开始寻找这种失败?
答案 0 :(得分:0)
罪魁祸首是以下选项:
config.assets.compile = true
它将直接编译每个没有指纹的文件并直接为rails提供服务
您应该将其设置为false并使用config.assets.precompile
,其中应包含所有预编译文件的列表:
config.assets.precompile += %w(application.js foo.js)
然后不要忘记在部署任务中运行rake assets:precompile
以重新编译新资产。
另外,您还应该将config.serve_static_assets
设置为false并让nginx / apache /您的Web服务器为您处理它,从rails提供资产会产生很大的开销。