2013-08-20 73 views
0

我有一些在AWS上託管的js。我想緩存它不支付額外的304 GET請求,但我很困惑,爲什麼兩個頭是不同的。 helper.js請求頭緩存策略和響應頭之間的區別

Accept:*/* 
Accept-Encoding:gzip,deflate,sdch 
Accept-Language:en-US,en;q=0.8 
Cache-Control:max-age=0 
Connection:keep-alive 
If-Modified-Since:Tue, 20 Aug 2013 13:08:13 GMT 

Request Method:GET 
Status Code:304 Not Modified 

請求頭和響應頭

Age:4348 
Cache-Control:max-age=604800 
Connection:keep-alive 

爲何不同?這是否意味着Cache-Control錯誤?我使用Chrome控制檯獲取標題。

+0

我有點困惑。你是問爲什麼服務器響應不同的Cache-Control頭,即使你在客戶端發送了Cache-Control頭?我猜你預計會發生? –

+0

基本上,我想我的js被緩存,這是什麼意思,這兩個有不同的緩存控制 –

回答

0

我不認爲緩存控制是錯誤的,它似乎是你的內容已被緩存。從請求標頭中,我知道第一個請求是在Tue, 20 Aug 2013 13:08:13 GMT處完成的,因爲瀏覽器指示服務器「嘿,自那時以來內容已更改?」。作爲迴應,服務器響應304 Not Modified標題,指示內容未被更改,並且應該被緩存604800秒,直到重新驗證它爲止。請記住,緩存是在服務器端完成的。所以,你可能想看看你的服務器在js文件上的defitinitons。通常,在部署環境中,我指示我的web服務器爲* .js * .png等發送緩存標頭。在配置用於發送緩存標頭的Web服務器之後,瀏覽器的工作是處理其餘部分。在這種情況下,您的瀏覽器按預期工作。

您可以查看RFC2616以獲得304響應。你也可以看看this decent caching tutorial。它應該清楚一些想法。

0

問題在於Chrome。如果按下刷新按鈕,則會使緩存失效,但如果按地址欄中的Enter鍵,則會從緩存中獲取資源。

相關問題