浏览器刷新304(Not Modified)和再次请求200(From Cache)结果对比
在做性能测试时,无意中发现一个事情:在一个图片资源已经本地缓存到浏览器并且未过期的情况下,刷新网页和再次请求返回的状态不一致。
以资源ETag=W/“PSA-aj-5xx_WUsSsC"为例:
再次请求:
repsonse=200,直接从从本地缓存中取资源。

Request URL:http://guoj.top/wp-content/uploads/2018/01/QQ%E6%88%AA%E5%9B%BE20180115140217.png
Request Method:GET
Status Code:200 OK (from cache)
Remote Address:47.93.55.78:80
Response Headers
HTTP/1.1 200 OK
Server: nginx/1.13.7
Content-Type: image/png
Content-Length: 8487
Connection: keep-alive
Accept-Ranges: bytes
X-Original-Content-Length: 24343
ETag: W/"PSA-aj-5xx_WUsSsC"
Date: Tue, 16 Jan 2018 08:32:27 GMT
Expires: Wed, 14 Feb 2018 05:59:18 GMT
Cache-Control: max-age=2496410
Request Headers
GET /wp-content/uploads/2018/01/QQ%E6%88%AA%E5%9B%BE20180115140217.png HTTP/1.1
Host: guoj.top
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.104 Safari/537.36 Core/1.53.4295.400 QQBrowser/9.7.12661.400
Accept: image/webp,image/*,*/*;q=0.8
Referer: http://guoj.top/
Accept-Encoding: gzip, deflate, sdch
Accept-Language: zh-CN,zh;q=0.8
Cookie: Hm_lvt_624adbfe276a5668e7b4779815c5ff38=1513561518; Hm_lvt_7e91fd8ec5e72f05612cc7e567977104=1513561518; wordpress_test_cookie=WP+Cookie+check; wordpress_logged_in_50ac8821fe935de01bdede6b95928a78=dong4stop%7C1516241303%7CRg3hAvZn7NOjg2mST5JurlQ55m4pDmbTzuiMGDygRfn%7Ccb8c3ee4f27ffba3171f763e4df91e2bb1514bfb5167a8af59a20cbc2dac74ec; wp-settings-1=editor%3Dtinymce%26libraryContent%3Dbrowse%26mfold%3Do%26editor_expand%3Don%26hidetb%3D1%26post_dfw%3Doff%26widgets_access%3Doff%26advImgDetails%3Dshow; wp-settings-time-1=1516087140; _GPSLSC=qEFEXaHVp1!Yd4ct0hstK!DAGQ2tgLU_
刷新网页
不同浏览器的效果不一样,又或者做了特别的设置造成。chrome会返回200(From Cache)。qqbrowser会返回304(Not Modified)。
这是因为qqbrowser刷新网页时在Request Header中加入了:
Cache-Control:max-age=0
If-None-Match:W/“PSA-aj-5xx_WUsSsC”;

Request URL:http://guoj.top/wp-content/uploads/2018/01/QQ%E6%88%AA%E5%9B%BE20180115140217.png
Request Method:GET
Status Code:304 Not Modified
Remote Address:47.93.55.78:80
Response Headers
HTTP/1.1 304 Not Modified
Server: nginx/1.13.7
Date: Tue, 16 Jan 2018 08:36:10 GMT
Connection: keep-alive
Request Headers
Accept:image/webp,image/*,*/*;q=0.8
Accept-Encoding:gzip, deflate, sdch
Accept-Language:zh-CN,zh;q=0.8
Cache-Control:max-age=0
Connection:keep-alive
Cookie:Hm_lvt_624adbfe276a5668e7b4779815c5ff38=1513561518; Hm_lvt_7e91fd8ec5e72f05612cc7e567977104=1513561518; wordpress_test_cookie=WP+Cookie+check; wordpress_logged_in_50ac8821fe935de01bdede6b95928a78=dong4stop%7C1516241303%7CRg3hAvZn7NOjg2mST5JurlQ55m4pDmbTzuiMGDygRfn%7Ccb8c3ee4f27ffba3171f763e4df91e2bb1514bfb5167a8af59a20cbc2dac74ec; wp-settings-1=editor%3Dtinymce%26libraryContent%3Dbrowse%26mfold%3Do%26editor_expand%3Don%26hidetb%3D1%26post_dfw%3Doff%26widgets_access%3Doff%26advImgDetails%3Dshow; wp-settings-time-1=1516087140; _GPSLSC=qEFEXaHVp1!Yd4ct0hstK!DAGQ2tgLU_
Host:guoj.top
If-None-Match:W/"PSA-aj-5xx_WUsSsC"
Referer:http://guoj.top/
User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.104 Safari/537.36 Core/1.53.4295.400 QQBrowser/9.7.12661.400