Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# sitecore:从媒体缓存中清除单个映像_C#_.net_Caching_Sitecore_Sitecore7 - Fatal编程技术网

C# sitecore:从媒体缓存中清除单个映像

C# sitecore:从媒体缓存中清除单个映像,c#,.net,caching,sitecore,sitecore7,C#,.net,Caching,Sitecore,Sitecore7,我们制作了一个定制的图像裁剪器 其思想是将查询字符串保存在项的字段中。 然后在渲染时,我们将该查询字符串添加到图像url 我们添加了一个getMediaStream管道。在这个管道中,我们使用基于图像所具有的查询字符串的ImageProcessor裁剪图像 这一切都有效。。。一次 一旦图像进入媒体缓存,我们就再也无法回到getMediaStream管道中。因为当你重新点击时,你不会改变图像,但是你会改变查询字符串 我们正在寻找一种方法,当我们保存新的作物时,我们可以从该图像中清除媒体缓存。 我们

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

其思想是将查询字符串保存在项的字段中。 然后在渲染时,我们将该查询字符串添加到图像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文件与缓存的图像一起存储,每个图像请求都有一个部分,并存储请求的查询字符串。总之,如果您的查询字符串是唯一的,那么您应该点击管道。

传递不同的参数通常会导致生成和缓存媒体。如果始终传递相同的参数,则出于性能原因,预计不会再次影响管道。你是说它不是这样工作的?