Sitecore 媒体库和 Azure CDN

Sitecore Media Library & Azure CDN

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

好吧,也许不是您的解决方案,但我会选择另一个 CDN。 Azure CDN 中的这种限制只是对你的解决方案施加了太大的限制。正如您所描述的,您应该真正利用 Sitecore 中的调整大小功能,以保持良好的架构和可维护的代码。

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

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

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

利用这一点的最简单方法是设置媒体前缀link:

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

然后您可以使用 URLRewrite Modulecdn/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 实例,因此无法对此进行测试。

更新:我写了一篇关于将 Sitecore 与 Azure 集成的文章,尽管它足够通用,可以与任何 CDN 提供商和任何版本的 Sitecore 一起使用(如果您覆盖媒体处理程序)。您可以在这里阅读更多内容:Setting up Azure CDN to deliver your Sitecore Media