2015-03-02 76 views
2

我打算在Sitecore媒体库顶部使用Azure CDN,据我了解,Azure CDN不支持延迟加载,唯一简单的方法是在Sitecore Azure CDN连接器中描述的根目录(基本上在发布事件中创建MediaLibrary文件夹结构和文件) 我可以看到它的问题是在Sitecore中调整大小的图像,您可以动态调整大小调整URL中的高度和宽度的项目,但我不知道如何从CDN的角度来处理这个问题。 很高兴知道您的意见并解决此限制。 StelioSitecore媒体库和Azure CDN

回答

2

如果您正在使用Azure的PaaS和利用WebRoles的(例如使用Sitecore的Azure的时候为模块),那么您应该能够更轻松地将云服务与Azure CDN集成。

我不确定您的计划与Azure集成的具体情况,但不是担心任何Sitecore处理程序并将文件推送到Azure,我建议您配置CDN端点,然后将所有媒体请求重定向到/cdn文件夹。这将导致Azure缓存动态内容,同时考虑到任何url参数(如调整大小)。如果内容未被缓存,则应从Sitecore中检索请求,然后针对将来的任何请求进行缓存,像边缘缓存服务器一样工作。

利用的最简单的方法是设置介质前缀链接:

<setting name="Media.MediaLinkPrefix" value="cdn/media" /> 

然后你就可以使用URLRewrite Module的映射cdn/media回到~/media。或者只是在Sitecore中添加处理程序:

<customHandlers> 
    <handler patch:before="*[@trigger='~/media/']" trigger="cdn/media/" handler="sitecore_media.ashx" /> 
</customHandlers> 

<mediaLibrary> 
    <mediaPrefixes> 
    <prefix value="cdn/media"/> 
    <prefix value="~/media"/> 
    </mediaPrefixes> 
</mediaLibrary> 

您不妨在CD环境中执行此操作。另外,你也可以利用这个来获得你的静态图像。你需要确保它们的前缀都是/cdn,但是如果该文件夹是/cdn/images,那么你可以使用不同的URL重写规则将其映射回/images

一些额外的信息:

不幸的是我没有访问到Azure的实例,这样无法检验这个。

+0

嗨Kam,其实你是对的,现在你可以配置CDN指向/ CDN文件夹,并在CD和媒体上使用重写规则。MediaLinkServerUrl这是一个简单的生活......唯一的问题可能是更新中间库项目并使cdn上的缓存版本无效,我想简单的选择应该是对媒体项目进行一些查询操作或者只是重命名它...... – Stelio 2015-03-05 10:33:07

+0

是 - '“计算机科学中只有两件难事:缓存失效和命名事项”:)您可以将媒体项目的修改日期附加为查询字符串参数,只需覆盖MediaManager始终包含此项即可。 – jammykam 2015-03-05 11:17:11

-1

好吧,也许不是你的情况的解决方案,但我会去另一个CDN。 Azure CDN中的这一限制只会对解决方案造成太大的限制。正如你所描述的,你应该真的在Sitecore中使用resize函数,以保持良好的架构和可维护的代码。

其他人也面临同样的问题,去了其他CDN选项,如Akamai和AWS CloudFront的:http://feedback.azure.com/forums/169397-cdn/suggestions/3046714-custom-origin-support-to-cdn

+0

我在短期内考虑的唯一选择是将Azure CDN用于静态图像,并使用带有CDN的媒体库处理调整大小的图像,并要求设计团队在上传前调整图像大小以避免性能问题... – Stelio 2015-03-04 11:32:59