我正在尝试为 ASP.NET Web Api 解决方案添加缓存支持(HTTP 和服务器)。
该解决方案是地理定位的,这意味着我可以根据呼叫者 IP 地址获得不同的结果。
可以使用类似于 VaryByCustom的方法轻松解决服务器端缓存的问题(就像这个),可以轻松解决服务器端缓存的问题。但是,这并不能解决客户端 HTTP 缓存的问题。这里是替代品
我正在考虑以下选项:
强制执行必须重新验证在缓存中
保持验证服务器端使用与 VaryByCustom 相同的算法,但使用 ETAGS 或任何跟踪原始缓存值来源国家/地区的机制在服务器端包含额外的缓存重新验证调用。
创建特定于国家/地区的路由HTTP 302
在这种情况下,应用程序调用
http://site/UK/content
如果缓存过期时来自美国 IP 地址,则重定向到美国版本
http://site/US/content
它可能会显示与本地源 IP 不匹配的过时内容。如果缓存过期是一个小值(< 1 小时),这不是一个严重的问题,因为国家/地区更改相当少见。
推荐的解决方案是什么?