相关疑难解决方法(0)

使IE缓存资源但始终重新验证

缓存控制标头"no-cache,must-revalidate,private"允许浏览器缓存资源,但强制使用条件请求重新验证.这在FF,Safari和Chrome中可以正常使用.

但是,IE7 + 8不发送条件请求,即请求头中缺少"If-Modified-Since",因此服务器使用HTTP/200而不是HTTP/304进行响应.

以下是完整的服务器响应标头:

Last-Modified: Wed, 16 Feb 2011 13:52:26 GMT
Content-type: text/html;charset=utf-8
Content-Length: 10835
Date: Wed, 16 Feb 2011 13:52:26 GMT
Connection: keep-alive
Cache-Control: no-cache, must-revalidate, private
Run Code Online (Sandbox Code Playgroud)

这似乎是一个IE错误,但我没有在网上找到任何相关内容,所以我想知道是否可能缺少或存在另一个标头会让IE表现得很奇怪?

讨论no-cache和max-age 之间的区别:Cache-Control:max-age = 0和no-cache之间有什么区别?

internet-explorer cache-control browser-cache http-headers

43
推荐指数
1
解决办法
5万
查看次数

哪个webbrowsers默认使用http/1.1?

任何人都知道我在哪里可以查找该信息?我很确定IE 4默认启用"使用HTTP 1.1"参数,关闭"使用HTTP 1.1通过代理连接".从这里获得这些信息.我假设后面的版本也会有"使用HTTP 1.1".IE的旧版本怎么样?Firefox,Opera,Safari等怎么样?

browser protocols http

10
推荐指数
2
解决办法
1万
查看次数

浏览器不能只使用之前的ajax调用缓存吗?

我试图依靠浏览器缓存来保存jQuery中从AJAX调用返回的JSON数据.

正常的浏览器活动始终依赖于浏览器缓存.示例:页面重新加载时不会重新获取jpg和gif图像.

但是当我尝试使用jQuery getJSON ajax调用时,我似乎无法避免从服务器获取数据.

我返回的标题看起来像这样(用firebug确认):

Transfer-Encoding: chunked
Date: Wed, 05 Aug 2009 02:55:39 GMT
Content-Type: text/plain; charset=ISO-8859-1
Expires: Wed, 05 Aug 2009 03:55:39 GMT
Cache-Control: max-age=3600
Run Code Online (Sandbox Code Playgroud)

然而,立即刷新页面会导致相同的请求命中服务器.

我已经看过几篇关于避免缓存行为的帖子,这不是我需要的.我已经看过几篇关于利用缓存的帖子,但那些似乎都依赖于在DOM中保存数据.我想要的东西就像缓存图像在页面重新加载时一样.

浏览器是否只是从它自己的缓存中获取它?

--x - x - x - x UPDATE --x - x - x--

令我失望的是,几位受人尊敬的人都认为这不仅是可能的.有些人甚至争辩说它不应该(这仍然令我感到困惑).

Stubburn故障,我尝试了以下几点:

我在要缓存的所有传出页面上设置了Etag标头(我选择一些选择URL参数来表示我正在请求的数据,并将其用于Etag值)

在下一个请求开始时,我只是检查请求中是否有'If-None-Match'标头.如果是这样,那么浏览器不会像我想要的那样缓存请求,所以我发送了304 Not Modified响应.

测试显示Firefox不会缓存我的请求(但我仍然可以避免'获取我的cgi的昂贵数据'部分),而IE6实际上会缓存它(甚至不会尝试从服务器取回).

这不是一个很好的答案,但它现在对我
有用(那些图形数据的完整页面刷新现在不会那么慢或昂贵).

(什么?我正在运行IE6!天啊!哦,看起来像一只松鼠!)

ajax jquery caching http

10
推荐指数
1
解决办法
7263
查看次数