Performance 浏览器检查是否在不需要时进行了修改(结果=304)

Performance 浏览器检查是否在不需要时进行了修改(结果=304),performance,http,browser,caching,Performance,Http,Browser,Caching,我试图阻止从客户端到服务器的请求被修改,但我失败了。 我想我遗漏了一些东西,所以我附加了两个请求的HTTP通信。我预计第二个请求不会发出: GET XXXXX/js/Is.js HTTP/1.1 Accept: */* Referer: http://XXXXX/XXXXX/ Accept-Language: he UA-CPU: x86 Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; W

我试图阻止从客户端到服务器的请求被修改,但我失败了。 我想我遗漏了一些东西,所以我附加了两个请求的HTTP通信。我预计第二个请求不会发出:

GET XXXXX/js/Is.js HTTP/1.1
Accept: */*
Referer: http://XXXXX/XXXXX/
Accept-Language: he
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Hewlett-Packard; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
Host: xxxxxxxx:8080
Connection: Keep-Alive
Pragma: no-cache
Cookie: JSESSIONID=XXXXXX



HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Pragma: No-cache
Cache-Control: public,max-age=860000
Expires: Sun, 3 Jan 2010 00:00:00 GMT
ETAG: W/"1634-1260925588406"
Last-Modified: Wed, 16 Dec 2009 01:06:28 GMT
Content-Encoding: gzip
Content-Type: text/javascript
Content-Length: 412
Date: Sun, 27 Dec 2009 07:25:52 GMT




GET /XXXXXXXX/Is.js HTTP/1.1
Accept: */*
Referer: http://XXXXXXXXX/XXXXXXX/servlet/Main
Accept-Language: he
UA-CPU: x86
Accept-Encoding: gzip, deflate
If-Modified-Since: Wed, 16 Dec 2009 01:06:28 GMT
If-None-Match: W/"1634-1260925588406"
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Hewlett-Packard; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
Host: xxxxxx:8080
Connection: Keep-Alive
Pragma: no-cache
Cookie: JSESSIONID=XXXXXX; 

HTTP/1.1 304 Not Modified
Server: Apache-Coyote/1.1
Pragma: No-cache
Cache-Control: public,max-age=860000
Expires: Sun, 3 Jan 2010 00:00:00 GMT
ETAG: W/"1634-1260925588406"
Date: Sun, 27 Dec 2009 07:34:33 GMT

您在第一个响应中发送了
Pragma:No cache
。第二个请求中的
Pragma:no cache
表明它是页面刷新的结果。在这种情况下,304是正确的响应。如果要强制重读,则应使用控件刷新。

我想我已经发现了问题。。。。我知道我错过了什么 加载的第一个文档正在使用以下内容执行重定向:

 <meta HTTP-EQUIV="Refresh" CONTENT="1; URL=/XXXXX">


感谢您的帮助……

另外,请记住,如果您通过元刷新导航到目标页面,则Pragma:no cache将自动发送。我不想强制重新读取相反的内容。我没有发布页面刷新。我导航到一个空白页,然后返回。您能从响应中删除
Pragma
标题吗?另外,从技术上讲(根据HTTP RFC),缓存控制头中的逗号和第二个字段之间应该有一个空格。这可能不会有什么不同,但可能会。看起来你正在使用IE7。对吗?你是如何导航到空白页面然后返回的?使用
标签和浏览器的后退按钮?还是用剧本?还是重定向?或者一个
标签?谢谢,是的,我正在使用IE7,我导航到了大约:blank,然后我导航到了后面的页面,我将尝试消除杂注。它没有解决问题,我不明白。。。。。也许它与html有某种联系?第一个响应头:HTTP/1.1 200 OK服务器:Apache Coyote/1.1过期:Thu,2020年1月1日02:00:00 IST缓存控制:公共上次修改:Sun,2009年12月27日12:37:43 GMT ETag:W/“1634-1261917463046”内容类型:文本/javascript内容长度:1634日期:周一,2009年12月28日12:19:17 GMT第二次请求HTTP/1.1 304未修改服务器:Apache Coyote/1.1过期:Thu,2020年1月1日02:00:00 IST缓存控制:公共上次修改:Sun,2009年12月27日12:37:43 GMT日期:Mon,2009年12月28日12:20:10 GMT谢谢,我试图将其更改为Pragma:Cache,但没有帮助。我不明白为什么浏览器在请求上发出Pragma:no cache,正如其他响应者所指出的,请求中的
Pragma:no cache
导致了问题。那么它是如何到达那里的呢?一种可能是原始HTML中的元标记;另一个是浏览器中的配置。你有正确的想法,看看实际的网络流量。下一步是清除缓存,重新启动浏览器和服务器,并检查“干净”通信量——包括HTML的内容。我无法计算重新启动服务器、客户端和清理缓存的次数。。。。您是否认为客户端请求pragma:no缓存是由引用的HTML中的某些内容发起的?