国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

解析瀏覽器端的AJAX緩存機制

2019-11-20 09:38:14
字體:
來源:轉載
供稿:網友

AJAX的緩存是由瀏覽器維持的,對于發向服務器的某個url,ajax僅在第一次請求時與服務器交互信息,之后的請求中,ajax不再向服務器提交請求,而是直接從緩存中提取數據。
有些情況下,我們需要每一次都從服務器得到更新后數據。思路是讓每次請求的url都不同,而又不影響正常應用:在url之后加入隨機內容。
e.g.

url=url+"&"+Math.random();

Key points:
1.每次請求的url都不一樣(ajax的緩存便不起作用)
2.不影響正常應用(最基本的)

這里我們由兩條結論:

1:Ajax的緩存和HTTP的緩存是一樣的
現代瀏覽器的HTTP和緩存機制比Ajax的XMLHttpRequest對象要差很多,所以它不認識也不關心Ajax請求.它僅僅是遵循普通的HTTP緩存規則,通過服務器返回的響應頭來進行緩存.
如果你已經對 HTTP緩存 有了解,那么你可以把HTTP緩存的知識用對Ajax緩存的理解上. 他們只有一點不同的,就是設置響應頭的方式會和普通文件不一樣.
下面這些響應頭可以讓你的Ajax可緩存:
Expires: 這一項應該被設置成未來的某個合適的時間點,時間點的設置取決于內容變動的頻繁程度.舉個栗子,如果請求的是個庫存數量,那么Expires的值可以是10秒以后.如果請求的是一個相片,那么Expires的值就可以久一點,因為它不會經常變動.Expires頭可以讓瀏覽器在一段時間內重用本地緩存數據,從而避免任何不必要的與服務器數據交互.
Last-Modified: 設置這一項是一個很好的選擇,通過它,瀏覽器在發送條件性GET請求的時候會使用請求頭里的 If-Modified-Since 來檢查本地緩存的內容.如果數據不需要更新,服務器會返回304響應狀態.
Cache-Control: 在合適的情況下,這個值應該被設置為 Public ,這樣所有的中間代理和緩存都可以被保存并且與其他用戶共享內容.在火狐里,它還支持HTTPS請求的緩存
當然,如果你使用POST方式發送Ajax是不能緩存的,因為POST請求永遠不會被緩存.如果你的Ajax請求會產生其他作用(比如銀行賬戶之間的轉賬),請使用POST請求.
我們設置了一個demo(這個demo已經不能看了

主站蜘蛛池模板: 蒙城县| 海门市| 平果县| 广宗县| 沂南县| 神木县| 全南县| 横峰县| 揭东县| 正定县| 石渠县| 平果县| 方正县| 青海省| 南部县| 辽宁省| 城市| 宿迁市| 永川市| 余姚市| 竹溪县| 桃园市| 天祝| 隆尧县| 石楼县| 扬中市| 无锡市| 冀州市| 贺州市| 静安区| 沂源县| 友谊县| 广汉市| 宝坻区| 天峨县| 儋州市| 炎陵县| 襄樊市| 平谷区| 肃南| 都匀市|