首页 > 解决方案 > 如何使缓存无效以在 Sitefinity 中的自定义小部件上显示更新的数据

问题描述

我在 Sitefinity 13 中设置了一个自定义小部件,该小部件从外部源检索数据并将该数据缓存在服务器端。一旦缓存超时结束,我需要小部件数据刷新它所在的任何页面上的数据,但似乎 Sitefinity 页面缓存机制将缓存页面的呈现结果,并且不会调用我的自定义小部件控制器看看我们是否需要更新数据。我研究了内置的 Sitefinity 缓存依赖项功能,例如 IHasCacheDependency 和 SubscribeCacheDependency,但这似乎是为了观察页面、小部件或其他项目何时通过 Sitefinity 的机制更新(例如,页面的更新版本已发布) . 我看不到使用该功能来实现我的目标的方法。

我是否缺少内置缓存依赖模块的内容?我有什么选择?

标签: sitefinity

解决方案


你有几个选择:

  1. 您可以通过 javascript 调用获取数据,而不是从控制器获取数据。该调用可以针对外部源,或者,如果这不可行,则可以针对您站点上的代理 api 控制器,这反过来又请求外部 api。这样页面将被缓存,但 JS 脚本将运行并且完全不依赖于页面缓存。

  2. 在设置中创建一个新的页面缓存配置文件,该配置文件没有滑动过期,并且持续时间正好是您需要的时间,例如 5 分钟。然后将该配置文件设置为页面的缓存配置文件。这样,页面缓存将在您需要时准确地失效(时间方面)。


推荐阅读