【问题标题】:Cloudfront, EC2 and Relative URLsCloudfront、EC2 和相对 URL
【发布时间】:2013-03-08 08:39:12
【问题描述】:

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

我的网站托管在 Amazon EC2 上。

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

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

那么,现在,为了利用 Cloudfront,我是否需要将我所有的相对 URL 更改为指向 Cloudfront 的绝对 URL,还是由 Amazon/EC2/Cloudfront 自动处理?或者,也许更好的提问方式是,我能否将所有 URL 保留为相对 URL,同时仍能获得 Cloudfront 的所有优势?

【问题讨论】:

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


    【解决方案1】:

    简短的回答是否定的,您的相对 URL 在 CloudFront 上将无法按预期工作 - 除了 Gio Hunt 提到的情况,一旦您的页面加载 CSS 文件,CSS 文件本身内的任何相对 URL 都将解析为 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。执行此操作所涉及的困难取决于您需要更改多少引用和文件,但相对路径的简单搜索和替换非常容易完成。

    祝你好运。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2016-01-13
        • 2014-08-28
        • 2011-10-30
        • 2018-10-07
        • 1970-01-01
        • 2016-11-15
        • 2020-04-11
        • 2021-03-25
        • 2021-10-26
        相关资源
        最近更新 更多