这可能是一个简单的问题,但我无法在任何地方找到直截了当的答案。
我的网站托管在Amazon EC2上。
我想利用Amazon Cloudfront加速我网站上的图片,Javascript和CSS的加载。
在我的网站中,我使用相对URL指向驻留在我的EC2服务器上的图像,Javascript和CSS。
那么,现在,为了利用Cloudfront,我是否需要将所有相对URL更改为指向Cloudfront的绝对URL,还是由Amazon / EC2 / Cloudfront自动处理?或者,提出这个问题的更好方法是,我可以将所有网址保留为相对URL并仍然可以获得Cloudfront的所有优势吗?
答案 0 :(得分:1)
简短回答是否定的,您的相对网址在CloudFront上无法按预期工作 - 除了Gio Hunt提到的情况,一旦您的网页加载CSS文件,CSS文件中的任何相对网址都会解析为CloudFront,但这可能对你的情况不太有用。
See this answer使用SASS的解决方案与我过去所做的完全匹配:
- 我使用了SASS - http://sass-lang.com
- 我有一个名为cdn.scss的mixin,其内容类似于$ image_path:“/ images /”;
- 以sass样式导入mixin @import“cdn.scss”
- 更新图像路径:background:url($ image_path +“image.png”);
- 在部署时,我更改了mixin.scss中的$ image_path变量,然后重新运行sass
基本上,您通过创建所有页面都尊重的变量来重新生成CSS以使用CDN(CloudFront)基本URL。这样做的难度取决于你需要改变多少引用和文件,但是相对路径的简单搜索和替换很容易实现。
祝你好运。答案 1 :(得分:0)
如果您想保留所有内容,可以通过cloudfront将所有内容设置为自定义源。如果您的网站大部分是静态的,那么这可以很好地工作。
如果您确实希望利用cloudfront而不发送所有内容,则需要将您的相对网址更新为绝对网址。只要通过cloudfront提供css文件,CSS文件就可以保留相对URL。