大部分接口應(yīng)該在響應(yīng)頭中攜帶?Last-Modified
,?ETag
,?Vary
,?Date
?信息,客戶端可以在隨后請(qǐng)求這些資源的時(shí)候,在請(qǐng)求頭中使用?If-Modified-Since
,?If-None-Match
?等請(qǐng)求頭來確認(rèn)資源是否經(jīng)過修改。
如果資源沒有進(jìn)行過修改,那么就可以響應(yīng)?304 Not Modified
?并且不在響應(yīng)實(shí)體中返回任何內(nèi)容。
$ curl -i http://api.example.com/#{RESOURCE_URI}
HTTP/1.1 200 OK
Cache-Control: public, max-age=60
Date: Thu, 05 Jul 2012 15:31:30 GMT
Vary: Accept, Authorization
ETag: "644b5b0155e6404a9cc4bd9d8b1ae730"
Last-Modified: Thu, 05 Jul 2012 15:31:30 GMT
Content
$ curl -i http://api.example.com/#{RESOURCE_URI} -H "If-Modified-Since: Thu, 05 Jul 2012 15:31:30 GMT"
HTTP/1.1 304 Not Modified
Cache-Control: public, max-age=60
Date: Thu, 05 Jul 2012 15:31:45 GMT
Vary: Accept, Authorization
Last-Modified: Thu, 05 Jul 2012 15:31:30 GMT
$ curl -i http://api.example.com/#{RESOURCE_URI} -H 'If-None-Match: "644b5b0155e6404a9cc4bd9d8b1ae730"'
HTTP/1.1 304 Not Modified
Cache-Control: public, max-age=60
Date: Thu, 05 Jul 2012 15:31:55 GMT
Vary: Accept, Authorization
ETag: "644b5b0155e6404a9cc4bd9d8b1ae730"
Last-Modified: Thu, 05 Jul 2012 15:31:30 GMT
相關(guān)資料:
更多建議: