6

这可能是一个简单的问题,但我在任何地方都找不到直接的答案。

我的网站托管在 Amazon EC2 上。

我想利用 Amazon Cloudfront 来加快我网站上图像、Javascript 和 CSS 的加载速度。

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

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

4

2 回答 2

1

简短的回答是否定的,您的相对 URL 将无法在 CloudFront 上按预期工作 - 除了Gio Hunt提到的情况,即一旦您的页面加载 CSS 文件,CSS 文件本身内的任何相对 URL 都将解析为 CloudFront,但这可能是在你的情况下不是很有用。

有关使用 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。执行此操作所涉及的困难取决于您需要更改多少引用和文件,但是对相对路径的简单搜索和替换非常容易完成。

祝你好运。

于 2013-03-21T05:23:09.770 回答
0

如果您想保留所有内容,您可以通过 cloudfront 将所有内容设置为自定义来源。如果您的网站大部分是静态的,这可以很好地工作。

如果您确实想利用云端而不发送所有内容,则需要将相对 URL 更新为绝对 URL。只要 css 文件通过 cloudfront 提供,CSS 文件就可以保留相对 url。

于 2013-03-19T15:34:58.400 回答