这就是我在production.rb(生产环境)文件中的内容。
#Enable serving of images, stylesheets, and JavaScripts from an asset server
config.action_controller.asset_host = "xxxxxxxxxxxxx.cloudfront.net"
所以它已启用。但是,我的背景图像在以前工作时停止显示。我需要在heroku或cloudfront上解决这个错误吗?我的背景图片大小为850kb。是由大图像尺寸引起的吗?
在指向图像的css.scss文件中,它是:
.big {
width: 100%;
height: 450px;
position: absolute;
z-index: -999;
top: 41px;
left: 0;
background: url(../img/main.jpg);
}
所以这指向我的heroku中的/ img文件夹。是否需要将其更改为在Amazon S3上上传的文件?为什么我的背景图片不再出现了?我目前正在为heroku支付额外的dyno,如果这有任何区别的话。
由于
答案 0 :(得分:2)
您需要使用Rails为您提供的image-url
或asset-path
帮助程序,以便在您生成的CSS文件中写出绝对图像路径。资产直接从Cloudfront提供,因此浏览器直接向Cloudfront发出请求 - 除了样式表请求之外,没有任何内容通过Heroku发送。
您可以在https://devcenter.heroku.com/articles/cdn-asset-host-rails31#asset-references-in-css-js
了解详情本文还介绍了assetsync gem,它在这里也非常方便。