2

Sitecore在发布媒体项目时如何处理竞争条件?Sitecore媒体项目和竞赛条件

场景:

  1. 有500MB MPG文件(存储为BLOB)非版本媒体项目是由 站点访问者下载。
  2. 下载将采取充其量 一个BEW分钟,在最坏的情况可能会在数小时内测量(如果他们是一个 低带宽连接上)。
  3. 用户正在下载作者 在媒体项上上传新版本的mpg并发布。

会发生什么,为什么?

其他变化包括: 在媒体项更改安全设置来阻止访问者下载 媒体项目被删除访问并发表了变化

猜测,在所有这些情况下,下载会中止,但如果是这样,服务器会发送什么响应?

回答

1

这不是一个difinitive答案,我同意瓦特/斯蒂芬约专用的流伙伴。我不知道这样的系统如何处理这个。

看来,Sitecore的创建为每个已发布和访问修订新媒体缓存文件,所以HTTP传输可以继续阅读旧文件,同时系统将写入新文件。不知道如果禁用缓存(我没有尝试禁用缓存),是否/如何工作。否则,尝试在读取时写入可能会被阻止或干扰读取。

请注意,即使您没有版本,也会得到新的修订版本ID。它可能是导致新缓存条目的发布,而不是新版本的发生。

2

我没有一个确切的答案,但Sitecore的/App_Data/MediaCache/下的文件系统上的缓存BLOB资产因此,或许现有的资产仍处于高速缓存。我不确定Sitecore的媒体缓存机制是如何工作的,但我敢打赌,一旦资产完全存在,它就会在新资产的下一个请求中清除/重新缓存。

只是一个猜测。也许反编译内核以查找处理缓存介质的代码。

+0

这听起来最有可能,但我很想知道答案.... –

2

(不是一个真正的答案..只是评论过大的盒子:P)

这是一个非常有趣的问题.. Sitecore的媒体性能是通过它做了很多缓存拷贝到磁盘和在后续请求中从那里传递它(也用于缓存缩略图等原始缩放副本)。一旦原始项目以某种方式被编辑然后重新发布,文件就会被刷新。

我不确定(并且很好奇)这将如何影响一个大文件,因为我认为很多人认为媒体可能是较小的文件,如图像或PDF等,用户只需重新请求,如果破碎,以及如何在项目本身更新时影响当前流式传输的文件。我相信很多这方面的工作都是IIS/ASP.NET流媒体,而不是Sitecore本身。

我不知道,如果Sitecore的缓存将保护/针对屏蔽,但这应该是相当足够简单,具有较大的媒体文件进行测试。感兴趣的结果(如大文件我亲自送到已经通过CDN或专用的流合作伙伴完成)