C# sitecore:从媒体缓存中清除单个映像
我们制作了一个定制的图像裁剪器 其思想是将查询字符串保存在项的字段中。 然后在渲染时,我们将该查询字符串添加到图像url 我们添加了一个getMediaStream管道。在这个管道中,我们使用基于图像所具有的查询字符串的ImageProcessor裁剪图像 这一切都有效。。。一次 一旦图像进入媒体缓存,我们就再也无法回到getMediaStream管道中。因为当你重新点击时,你不会改变图像,但是你会改变查询字符串 我们正在寻找一种方法,当我们保存新的作物时,我们可以从该图像中清除媒体缓存。 我们尝试了以下方法:C# sitecore:从媒体缓存中清除单个映像,c#,.net,caching,sitecore,sitecore7,C#,.net,Caching,Sitecore,Sitecore7,我们制作了一个定制的图像裁剪器 其思想是将查询字符串保存在项的字段中。 然后在渲染时,我们将该查询字符串添加到图像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);
我们获取媒体缓存流并尝试将其设置为零,但这会导致以下异常:无法创建流共享所需的缓冲区文件
如果可以从媒体缓存中清除单个项目,您有什么想法吗?我认为您不需要从缓存中删除单个项目。Sitecore为每个唯一请求在缓存中存储一个映像。如果您确实更新了用于请求映像的查询字符串,那么Sitecore应该再次调用
getmediastream
管道
我猜您的自定义查询字符串实际上并没有作为请求的一部分传递
Sitecore将一个ini文件与缓存的图像一起存储,每个图像请求都有一个部分,并存储请求的查询字符串。总之,如果您的查询字符串是唯一的,那么您应该点击管道。传递不同的参数通常会导致生成和缓存媒体。如果始终传递相同的参数,则出于性能原因,预计不会再次影响管道。你是说它不是这样工作的?