问题标签 [amazon-cloudfront]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
758 浏览

ruby-on-rails - 如何更改 Rails 资产标签 URL 的格式?

背景

我目前正在开发一个 Rails 3 项目,我打算将其与 Amazon CloudFront 一起使用,其自定义源指向我的实际 Web 服务器。这意味着我的 Web 服务器将告诉浏览器从 CloudFront 检索静态资产,如果 CloudFront 缓存了资产,它将返回它,如果没有,它将使用我的 Web 服务器的相同路径检索它,然后将其缓存以备将来使用要求。

问题

Amazon CloudFront 在确定是否应该破坏自己的缓存以从其来源重新下载资产时,会丢弃并忽略查询字符串参数。RAILS_ASSET_ID这显然给 Rails 使用which is to do:生成 URL 的方式带来了问题/assets/path/to/asset.ext?RAILS_ASSET_ID。使用默认资产 URL,CloudFront 将保留陈旧资产长达 24 小时。

解决方案?

我希望做的是以某种方式覆盖 Rails 3 生成资产标签的方式,以便我可以生成像/assets/RAILS_ASSET_ID/path/to/asset.ext. 我已经有了如何让 Web 服务器响应这些 URL 的解决方案,我只需要弄清楚如何让 Rails 生成 URL。

笔记

  1. 我的RAILS_ASSET_ID将是我最新的 git 提交哈希的子字符串。设置这将由 capistrano 在部署过程中处理。我可以在每次部署中破坏所有资产缓存,我不需要特定于资产的 ID
  2. 我已经尝试过覆盖ActionView::Helpers::AssetTagHelper.rewrite_asset_path,但它似乎不起作用,从我读到的内容来看,这是一个不应依赖的私有方法。
  3. 先感谢您!
0 投票
3 回答
4049 浏览

amazon - Amazon CloudFront 在中国的带宽很差。有什么建议么?

嗨,我正在为我的 SaaS 应用程序使用 Amazon CloudFront(文件在 S3 上),但我在中国的连接速度很慢。我没有找到太多关于这件事的资料,有人遇到过这种问题吗?

我已经联系了ChinaCache,可能会在中国将它们用于CDN,但他们还没有回复。

有什么建议么?

0 投票
1 回答
2148 浏览

ajax - 从 CDN 加载脚本(使用 jQuery)的 Ajax 无法正常工作

在我的 Javascript 繁重的 Web 应用程序中,我有一些脚本加载到源 HTML 中并带有标签,还有一些我根据需要使用 jQuery 的 ajax 方法加载。

我正在将我的应用程序的大部分静态资产重新定位到 CDN(我正在使用 AWS Cloudfront)。我的动态负载不再起作用。jQuery Ajax 调用:

触发成功功能,但内容为空。

我想知道这是否是因为这样的请求违反了浏览器的跨站点脚本安全模型。如果是这种情况,是否可以从 CDN 动态加载脚本?啊……我目前没有为云端主机使用 CNAME 别名。这样做能解决这个问题吗?

0 投票
3 回答
1837 浏览

amazon-ec2 - AWS:单个域上的 Cloudfront 和 EC2

是否可以从 ec2 托管 mysite.com/ 并从 cloudfront 托管 mysite.com/logo.gif?

0 投票
1 回答
279 浏览

amazon-web-services - 如果您更改 s3 存储桶并且您正在使用 CloudFront,它将重新分发文件

我有一个包含一些文件的 Amazon S3 存储桶 - 我使用 CloudFront 来分发它。现在,在 CloudFront 上线后,我需要向存储桶添加一个额外的文件。CloudFront 会找到新文件吗?它会自动分发吗?

0 投票
2 回答
1720 浏览

video-streaming - 将实时视频发布到 CloudFront 流

我正在研究在 web 应用程序中流式传输实时视频的最佳方式(多个用户创建的流)。到目前为止,使用 AWS CloudFront 将视频分发到 Flash 客户端似乎相当简单,但我还没有找到太多关于发布视频的文档。

理想情况下,发布界面类似于 JustinTV 或 Ustream,因为一个简单的 Flash 应用程序会从网络摄像头捕获视频并将其流式传输到某个地方。有谁知道 CloudFront 是否可以做到这一点?如果是这样,是否有人有指向某些文档或教程的链接?亚马逊自己的文档似乎只涵盖现有视频文件的流式传输。

谢谢

0 投票
2 回答
6538 浏览

caching - 使用 Cloudfront 时,如何设置相对于当前日期的 Expires Header?

我们正在开发一个大型网站,我们所有的图像和资源都在 Amazon S3 中。我们还使用 Cloudfront 在全球范围内分发我们的内容。我们想要的是告诉客户端 Web 浏览器缓存我们的文件,因为当我们更改它们时,我们也会更改 URL(Cloudfront 不会在其他地方反映 24 小时的更改)。

我们目前正在使用 ETag,但这不是最佳选择,因为客户端仍然必须执行请求以检查资源是否已更改。

一个解决方案是 Expires Header,但我们没有找到一种方法来设置它相对于当前日期的方法,就像在 S3 的 Apache 配置中可能的那样,我们不能定期更新所有内容,因为它几乎是。因此,我们需要一个配置选项,将 Expires 标头设置为相对于所有内容的当前日期的日期。

另一种解决方案是将 Cache-Control: max-age 设置为某个值。这行得通吗?它被主要浏览器接受吗?我会用这个破坏一些缓存算法吗?为什么 YSlow 建议设置 Expires 标头而不是 Cache-Control: max-age?

还有其他建议吗?我们正在压缩 CSS 和 JS,在合理的地方使用 Sprites,在可能的地方设置 Expires 标头和 ETag,并且很快将使用 Yahoo Compression Tool 和 gzipping Output 压缩我们的图像。

0 投票
1 回答
108 浏览

caching - 有哪些方法可以确保浏览器从云端获取更新的文件

我已经在云端分发中设置了静态文件(css、图像和 js)文件,并且正在使用文件的云端 URL 在 JSP 文件中引用它们。我已将缓存控制值设置为最多一个月。

假设我在缓存过期之前修改 css/js 文件,并在使原始对象无效后更新云端分发中的文件。

有哪些方法可以确保浏览器获取更新的文件?

0 投票
4 回答
3794 浏览

javascript - 如何为 Amazon S3 结合 JS/CSS?

在一个普通的 VPS 站点上,我会使用 Minify 来压缩和组合多个 CSS/JS 文件,因此该站点只使用 1 或 2 个 HTTP 请求。我现在正在处理的一个站点将其 CSS/JS 文件托管在 Amazon S3 上并通过 Amazon CloudFront 提供服务。显然 Minify 是一个 PHP5 应用程序,不能在 AWS 上运行。

我可以在上传之前轻松压缩脚本,但是在 AWS S3 上组合脚本以减少 HTTP 请求的最佳方法是什么?

http://code.google.com/p/minify/

0 投票
3 回答
1758 浏览

python - Access Denied with Amazon CloudFront private distribution

I'm am trying to setup CloudFront for private content distribution but I keep getting Access Denied errors when I follow the generated URL. To be clear, I have already created the CloudFront distribution, marked it private, created an Origin Access ID which has been given read permission to all the relevant files.

I'v written a simple Python script to generate the URLs using the examples presented on the Amazon webpage for signing URLs and am including the text below:

Can anybody see anything obviously wrong with what I am doing? I've verified that when I sign the digest using the private key that I can verify it with the public key (provided I do the verification before feeding it through base64 and the translation step).

Thanks.