【发布时间】:2014-12-31 02:14:45
【问题描述】:
我们制作了自定义图像裁剪器。
这个想法是将查询字符串保存在项目的字段中。 然后在渲染时,我们将该查询字符串添加到图像 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
是否可以从媒体缓存中清除单个项目?
【问题讨论】:
-
传递不同的参数通常会导致媒体被生成和缓存。如果您始终传递相同的参数,则出于性能原因,预计不会再次访问管道。你是说它不是这样工作的吗?
标签: c# .net caching sitecore sitecore7