這段時(shí)間我在做一個(gè)單頁面應(yīng)用,js、css、img等資源都有版本號(hào)控制,可以很好的解決緩存問題。
但是有個(gè)問題,發(fā)現(xiàn)一旦入口的html被緩存了,里面資源即使被版本號(hào)處理也無濟(jì)于事。
我相信如果可以和sf網(wǎng)站那樣,每點(diǎn)一個(gè)欄目都不會(huì)緩存,返回狀態(tài)碼200一定可以解決問題。
我的問題是:
1、單頁面應(yīng)用入口的html緩存如何處理?
2、如何做到每次刷新單頁面應(yīng)用都會(huì)返回狀態(tài)碼200?
補(bǔ)充:
百度的首頁也是這樣,每次請(qǐng)求主頁面返回的狀態(tài)碼都是200。如果是由于客戶端檢測(cè)到本地與服務(wù)端的內(nèi)容不同,但是我將每次相應(yīng)的內(nèi)容通過對(duì)比工具進(jìn)行對(duì)比,都是一樣的,這是狀態(tài)碼應(yīng)該是304才對(duì)。
樓主可以關(guān)注一下服務(wù)器響應(yīng)的header
中應(yīng)該有這2個(gè)設(shè)置,把這個(gè)去掉,就不會(huì)出現(xiàn)304
了。
sf的頭條那個(gè)頁面,本身就是動(dòng)態(tài)頁面。如果是靜態(tài)頁面,一般情況下是會(huì)被服務(wù)器當(dāng)作靜態(tài)資源給緩存掉的,這個(gè)時(shí)候其實(shí)還是比較好控制,只需要設(shè)置一下服務(wù)端的緩存策略即可,根據(jù)不同的服務(wù)器軟件設(shè)置方式不一,但大體上都是設(shè)置某文件或者某路徑下的文件不緩存,或者縮短靜態(tài)緩存的時(shí)間。
題主這個(gè)情況極有可能是緩存時(shí)間過長(zhǎng)的問題。清理下本地瀏覽器緩存后刷新頁面還是老頁面,估計(jì)就這個(gè)問題了。
然后,如果這個(gè)服務(wù)在線上,那這影響因素太多了,cdn、運(yùn)營(yíng)商等等都會(huì)做緩存,曾經(jīng)還見過一大兄弟碰到傷心病狂的運(yùn)營(yíng)商連post請(qǐng)求都緩存的。如果有cdn,手動(dòng)更新cdn各個(gè)節(jié)點(diǎn)上的資源。如果是運(yùn)營(yíng)商的緩存,那就慢慢的等吧。。。
客戶端和服務(wù)器進(jìn)行對(duì)比,內(nèi)容沒變化的時(shí)候會(huì)返回304,如果有變化才會(huì)返回200.