首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ImageResizer DiskCache+AzureReader奇怪行为

ImageResizer DiskCache+AzureReader奇怪行为
EN

Stack Overflow用户
提问于 2016-10-19 16:21:23
回答 1查看 138关注 0票数 0

我正在使用ImageResizer + Diskcache插件,我发现了一些问题,以使缓存正常工作。要么图像将永久缓存(不管我上传了多少次新图像),要么更改一些设置,在某些浏览器/计算机中获取旧图像,在另一些浏览器/计算机中更改新图像。

这就是我现在在我的web.config中拥有的内容:

代码语言:javascript
复制
<add name="AzureReader2" connectionString="blahblahblah" endpoint="http://blahblahblah.blob.core.windows.net/" prefix="~/" redirectToBlobIfUnmodified="false" requireImageExtension="false" checkForModifiedFiles="true" cacheMetadata="true"/>

以及:

代码语言:javascript
复制
    <diskcache dir="~/imagecache" autoclean="true" hashModifiedDate="true" subfolders="8192" asyncWrites="true" asyncBufferSize="10485760" cacheAccessTimeout="15000" logging="true" />

不确定是否可以使用现有的参数来实现。我的目标是使缓存失效,最好是在上传了新图像时,而不必更改为图像服务的查询字符串以获得新的图像。

我在想:

  • 也许有一个blob存储触发器,当一个替换的映像被上传时,触发一个web钩子来删除该图像的缓存?
  • 或者向我的imageresizer应用程序请求将新图像预加载到缓存中,以取代旧的缓存映像?

我看过一些关于使用IVirtualFileWithModifiedDate的帖子,但据我所知,这会对性能产生很大的影响吗?大概是我们5%的图片请求会有人上传一张图片,并期待它立刻看到它,因为大多数图像几乎没有变化,但如果图像没有显示新的图片,甚至一天后,他们已经上传了,这真的很令人沮丧!

如果我可以使用IVirtualFileWithModifiedDate使缓存无效时,图像已经改变,而不是在每个图像请求?那有可能吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-25 18:06:50

我在一些浏览器/计算机中得到旧的图像,在另一些浏览器/计算机中得到新的图像。

不同的浏览器正在显示不同的版本,这表明浏览器缓存或代理/CDN缓存都是错误的。

ImageResizer的DiskCache对修改后的日期进行散列,因此它始终与存储提供程序一样正确。

关于您对服务器端失效的期望:

您使用的是checkForModifiedFiles="true" cacheMetadata="true",这意味着将查询Azure的最新修改日期,但元数据将以1小时的滑动过期窗口缓存。也就是说,如果一个URL在1小时内没有被访问,那么下一个请求将导致检查修改后的日期。见StandardMetadataCache

您可以通过自己实现IMetadataCache并将该缓存分配给正在使用的存储提供程序的.MetadataCache成员来更改此行为。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40136795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档