sitecore:从媒体缓存中清除单个图像

本文关键字:清除 单个 图像 缓存 媒体 sitecore | 更新日期: 2023-09-27 18:29:04

我们制作了一个自定义的图像裁剪器。

其思想是将查询字符串保存在项的字段中。然后在渲染时,我们将该查询字符串添加到图像url中。

我们添加了一个getMediaStream管道。在这个管道中,我们使用ImageProcessor根据图像的查询字符串来裁剪图像。

这一切都有效。。。一旦

在它工作之后,一旦图像在媒体缓存中,我们就再也回不到getMediaStream管道了。因为当您重新操作时,您不会更改图像,而是更改查询字符串。

我们正在寻找一种方法,当我们保存新作物时,我们会从该图像中清除媒体缓存。我们尝试了以下方法:

var mediaItem = new MediaItem(imageField.MediaItem);
var media = MediaManager.GetMedia(mediaItem);
var mediaOptions = new MediaOptions();
var mediaStream = MediaManager.Cache.GetStream(media, mediaOptions);
MediaStream cachedStream = null;
MediaManager.Cache.AddStream(media, mediaOptions, mediaStream, out cachedStream);

我们获取媒体缓存流并尝试将其设置为零,但这会导致以下异常:Could not create the buffer file needed for stream sharing

如果可以从媒体缓存中清除单个项目,有什么想法吗?

sitecore:从媒体缓存中清除单个图像

我认为您不需要从缓存中删除任何一项。Sitecore为每个唯一请求在缓存中存储一个映像。如果您确实更新了用于请求映像的查询字符串,那么Sitecore应该再次调用getmediastream管道。

我的猜测是,您的自定义查询字符串实际上并没有作为请求的一部分传递。

Sitecore在缓存的图像旁边存储一个ini文件,每个图像请求都有一个部分,并存储请求的查询字符串。最重要的是,如果查询字符串是唯一的,那么您应该进入管道。