Magento - Amazon Cloudfront CDN和缓存

时间:2012-09-26 16:40:58

标签: magento amazon-s3 amazon-cloudfront

我正在尝试理解CDN和缓存,但我找不到答案。

如何让amazon 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,它会自动更改为我的mahlo-cached元素的URL,但仍然是静态URL的云端URL。

如果我稍后回去,甚至整整一天,它都不会使用CDN来源,这让我相信它不会在亚马逊上缓存我的magento缓存的css / js / images。

如果我关闭缓存& js / css优化,然后它向cloudfront cdn发出过量的http请求。

3 个答案:

答案 0 :(得分:3)

当Cloudfront因某种原因询问您的服务器(原点)时,您的服务器没有回复200.您应该检查日志并重写规则以确定Cloudfront收到301响应的原因。

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

答案 1 :(得分:1)

我遇到了类似的问题,原因与Gordon Knoppe的答案没有什么不同。我有一个页面,其中包含大量缩略图,本应由我的CloudFront CDN提供。奇怪的事情是3分中有2分没有,而那些没有的东西与Fiddler一起显示“301 - Permanent Redirected”。

结果显示图像的URL路径可能包含大写字母(有些已经完成,有些没有),对于那些确实与重写规则冲突的人,确保所有URL都被处理为小写。最终结果是CloudFront请求仅在200个回复中缓存,而在路径不是小写时返回301。一旦URL路径被修复为全部小写,一切正常。

答案 2 :(得分:0)

willboudle

我已经使用亚马逊云端,S3和亚马逊OnePica Extension实现了精确的功能。

因此,OnePica已经负责S3和Cloudfront的产品图像。但对于Css&我们已经定制了我们的代码。我们自定义Mage_Core_Helper_Data::mergeFiles()& Mage_Core_Model_Design_Package::getMergedJsUrl($files)Mage_Core_Model_Design_Package::getMergedCssUrl($files)方法

当然,您需要将媒体URL更改为云端URL。如果你想要你的文件应该被Gzip压缩,请提一句建议。然后你必须gzip你的CSS&然后将JS文件上传到S3服务器。 希望这会对你有所帮助