我正在使用一个特别昂贵的(就查询和带宽而言),将其视为项目目录。但是,目录还需要始终完全准确,即目录的更新需要实时反映,因此固定的缓存到期期限将不起作用。
客户当前正在使用 JQuery 1.8.2 请求目录,就像这样:
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "http://myserver.com/somejsonquery.aspx",
data: {},
dataType: "json",
success: function ( ... ) { ... },
error: function ( ... ) { ... }
});
结果是格式正确的 JSON,内容类型为“application/json”。
由于我在服务器端维护了一个可靠的缓存,我真的很想实现 If-Modified-Since 语义,以便我的服务器可以在缓存是当前的(不会导致数据库或网络命中)时返回 304,并且只发送如果自“If-Modified-Since”时间戳后发生重新加载,则向客户端提供新目录。
但是,我无法让它工作(至少在 IE 上)。我尝试设置以下内容,但仍然无法让客户端发送 If-Modified-Since:
- 在 JSON 请求上设置“缓存:真”
- 使服务器在响应中返回“Cache-control: private”HTTP 标头
任何对此有任何见解的人?
作为后续,我还想知道如果我将 Cache-control 设置为“public”(即可由代理服务器缓存),缓存一致性是否仍会通过代理维护?即每次客户端请求该页面时,代理都会检查回我的服务器。如果我要启用代理缓存,我需要完全确定代理将保证一致的缓存状态。
我已经坚持了一段时间,所以任何帮助将不胜感激!
谢谢,-K。