0

我试图了解 CDN 和缓存,但没有找到答案。

你如何让亚马逊 CDN 缓存来自你的原始服务器缓存图像的图像?有没有办法测试它?

我将 CDN 源映射到我的服务器,所以当它没有找到时

http://cdn.mywebsite.com/media/catalog/product/cache/1/small_image/190x/9df78eab33525d08d6e5fb8d27136e95/i/m/img101.jpg

它反而寻找

http://mywebsite.com/media/catalog/product/cache/1/small_image/190x/9df78eab33525d08d6e5fb8d27136e95/i/m/img101.jpg

您可以在 Firebug 中看到,所有 magento 缓存的元素都得到一个 301 永久移动,而静态文件得到一个 OK 200 响应。此外,如果我输入云端 URL,它会自动更改为我的 magento 缓存元素的 url,但仍保留为静态元素的云端 url。

如果我稍后再回去,即使是一整天,它都不会使用 CDN 源,这让我相信它没有在 Amazon 上缓存我的 magento 缓存的 css/js/images。

如果我关闭缓存和 js/css 优化,那么它会向云端 cdn 发出过多的 http 请求。

4

3 回答 3

3

当 Cloudfront 出于某种原因向您的服务器(源)询问文件时,您的服务器没有以 200 响应。您应该检查您的日志并重写规则以确定 Cloudfront 接收 301 响应的原因。

我能想到的一种解释是,如果你有一个重定向到 www.* 等的规则。

于 2012-09-26T23:33:29.843 回答
1

我遇到了类似的问题,原因与 Gordon Knoppe 的回答没有什么不同。我有一个包含大量缩略图的页面,这些缩略图应该由我的 CloudFront CDN 提供。奇怪的是,三分之二没有,而那些没有显示“301 - 永久重定向”的 Fiddler。

原来图像的 URL 路径可能包含大写字母(有些有,有些没有),对于那些有的,它们与确保所有 URL 都以小写形式处理的重写规则相冲突。最终结果是 CloudFront 请求仅缓存在 200 个回复上,而不是在路径不是小写时返回的 301 上。将 URL 路径修复为全部小写后,一切正常。

于 2012-09-28T21:32:29.457 回答
0

威尔布德尔

我已经用 Amazon cloudfront、S3 和 amazon OnePica Extension实现了精确的东西。

所以 OnePica 已经为 S3 和 Cloudfront 处理了产品图片。但是对于 Css & Js,我们已经自定义了我们的代码。我们定制Mage_Core_Helper_Data::mergeFiles() &Mage_Core_Model_Design_Package::getMergedJsUrl($files)Mage_Core_Model_Design_Package::getMergedCssUrl($files)方法

当然,您需要将您的媒体 URL 更改为云端 URL。如果您希望对您的文件进行 Gzip 压缩,请提个建议。然后你必须压缩你的 CSS & JS 文件,然后上传到 S3 服务器。希望对你有帮助

于 2012-09-27T11:48:35.563 回答