You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Semantic MediaWiki查询始终返回非缓存结果?

Semantic MediaWiki 查询缓存问题解决方案

针对format=max的缓存绕过方法

Semantic MediaWiki的聚合类查询(比如format=max)默认会被缓存,普通用户没法修改全局缓存配置,但可以通过添加无意义的动态参数绕过缓存:

  • 利用MediaWiki的{{CURRENTTIMESTAMP}}变量生成唯一参数,让查询每次加载都被视为新请求,写法如下:
    {{#ask:[[Category:Foo]]
    |?Has ID
    |format=max
    |dummy_param={{CURRENTTIMESTAMP}}
    }}
    
    这里的dummy_param是自定义的无效参数,不会影响查询逻辑,但会让缓存系统认为这是全新查询,从而返回实时计算的最大值。只要你的Wiki开启了{{CURRENTTIMESTAMP}}(大部分公共Wiki都支持),这个方法就能生效。

排序取首条写法的缓存情况

你用的这种排序后取第一条的查询:

{{#ask:[[Category:Foo]]
|?Has ID
|sort=Has ID
|order=desc
|limit=1
}}

同样会被MediaWiki的页面缓存覆盖。不过它的缓存更新逻辑相对灵敏:当Category:Foo下的页面有Has ID属性修改时,缓存通常会自动触发刷新,但如果是高频修改场景,还是可能出现缓存延迟。

如果要让这个查询也强制返回实时结果,同样可以添加动态参数绕过缓存:

{{#ask:[[Category:Foo]]
|?Has ID
|sort=Has ID
|order=desc
|limit=1
|dummy_param={{CURRENTTIMESTAMP}}
}}

注意事项

  • 这种绕过缓存的方式会增加服务器计算负载,只在确实需要实时结果的场景使用;
  • 如果你的Wiki禁用了{{CURRENTTIMESTAMP}},可以尝试用其他动态变量(比如{{CURRENTDAY}}{{CURRENTHOUR}}),效果类似。

内容的提问来源于stack exchange,提问作者MothOnMars

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 07:04:56