2012-09-26 132 views
0

我想了解CDN和缓存,我没有找到答案。Magento - 亚马逊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,它会自动更改为我的网址以获取magento-cached元素,但仍然是静态网址的云端网址。

如果我以后再回来,即使是一整天,它也不会使用CDN源代码,导致我相信它没有在Amazon上缓存我的magento缓存的css/js/images。

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

回答

3

当Cloudfront因为某种原因要求您的服务器(源)为您的服务器没有应答200.您应该检查您的日志并重写规则以确定为什么Cloudfront正在接收301响应。

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

+1

此www。*重定向是我的问题的来源。非常感谢你的建议。 – DavidM

0

willboudle

我已经实现了确切的事情与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。如果你希望你的文件应该被压缩,只需要一个建议的话。那么你必须gzip你的JS文件,然后上传到S3服务器。 希望这会帮助你

1

我有一个类似的问题,原因并不像戈登诺普的答案。我有一个包含大量本应由CloudFront CDN提供服务的缩略图的页面。奇怪的事情是三分之二没有,而那些没有显示“301 - 永久重定向”与提琴手。

原来,图像的URL路径可能包含大写字母(有些是做过的,有些没有做过),还有那些与重写规则相冲突的规则,这些规则确保所有的URL都以小写字母处理。最终的结果是CloudFront请求只缓存在200个回复上,而不是在路径不是小写的情况下返回301。一旦URL路径被固定为全部小写,一切正常。