Cloudfront,EC2和相对URL

时间:2013-03-19 15:19:34

标签: amazon-ec2 amazon-cloudfront relative-url

这可能是一个简单的问题,但我无法在任何地方找到直截了当的答案。

我的网站托管在Amazon EC2上。

我想利用Amazon Cloudfront加速我网站上的图片,Javascript和CSS的加载。

在我的网站中,我使用相对URL指向驻留在我的EC2服务器上的图像,Javascript和CSS。

那么,现在,为了利用Cloudfront,我是否需要将所有相对URL更改为指向Cloudfront的绝对URL,还是由Amazon / EC2 / Cloudfront自动处理?或者,提出这个问题的更好方法是,我可以将所有网址保留为相对URL并仍然可以获得Cloudfront的所有优势吗?

2 个答案:

答案 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。