1
3
输出缓存有一个“缓存依赖项”的概念,这可能就是您要寻找的。 .NET有一个FileCacheDependency,它意味着如果磁盘上的文件发生更改,缓存项将自动失效;还有一个SqlCacheDependency,它在MSSQL数据库中的数据发生更改时使对象失效。也可以编写自定义缓存依赖项。 HttpResponse有一堆名为Add*Dependency/ies的方法让您可以使用它。
这将为您的响应注册一个依赖项。当您的响应被添加到输出缓存时,任何依赖项都会随之发生。当依赖项更改时,缓存项将自动失效。 如果您的图像是基于文件或SQL数据的,这可能对您非常有用。 你也可以使用HttpResponse.AddCacheItemDependency使一个缓存项依赖于另一个缓存项。如果您知道您的原始图像URL“/图像/用户?id=1“将始终缓存,然后您可以使调整大小的图像依赖于原始图像,并且HttpResponse.RemoveOutputCacheItem()将清除所有原始文件。如果原始图像不总是被缓存(可能没有人请求原始图像,只有缩略图),那么我认为这样做行不通。 内置缓存依赖项工作的原因是Windows和sqlserver都有内置api来通知对文件或数据的更改。内置的缓存依赖项是围绕这些依赖项的包装器。但是如果这两种方法都不合适,那么最后一种方法就是为自己的目的实现一个类似的东西。 基本思想(未经测试)是将CacheDependency子类化,我们称之为PictureCacheDependency。 您需要设置某种侦听器/观察者模式,以便当用户编辑其图片时,图片编辑代码可以告诉任何相关的PictureCacheDependency对象图片已更改。当发生这种情况时,PictureCacheDependency应该调用base.NotifyDependencyChanged已更改,框架将处理其余部分。
|
2
1
|
Haim Ohayon · 这些链接之间有什么区别? 2 年前 |