iOS6又爆Bug - Safari緩存POST的Ajax請(qǐng)求結(jié)果
近期許多開發(fā)人員發(fā)現(xiàn)他們的web應(yīng)用在iOS6下發(fā)生一些奇怪的問題,許多用POST實(shí)現(xiàn)的諸如用戶登陸、請(qǐng)求即時(shí)結(jié)果的功能在iOS6的Safari下都被緩存了,導(dǎo)致無法切換用戶,無法獲取最新的即時(shí)信息等。
眾所周知,POST這種非等冪請(qǐng)求的返回結(jié)果在HTML規(guī)范中,除非特別聲明需要緩存,否則默認(rèn)是不被瀏覽器緩存的,而iOS6中返回的json或者xml都是被緩存過的內(nèi)容。我們有理由相信這是iOS6中的一個(gè)小Bug,但是對(duì)于開發(fā)人員來說卻是噩夢(mèng)。
據(jù)了解iOS6中Safari的緩存機(jī)制如下:
沒有 Cache-Control 或者 Expires headers = iOS6 Safari 會(huì)緩存
Cache-Control max-age=0 或者 immediate Expires = iOS6 Safari 會(huì)緩存
Cache-Control: no-cache = iOS6 Safari 不會(huì)緩存
所以當(dāng)前開發(fā)人員可以做的就是將所有有POST請(qǐng)求的地方以及返回的內(nèi)容部分加入no-cache聲明。