?
一 現象
?
get請求在有些瀏覽器中會緩存。瀏覽器不會發送請求,而是使用上次請求獲取到的結果。
post請求不會緩存。每次都會發送請求。
?
二 解決?
?
jQuery提供了禁止Ajax請求緩存的方法:
$.ajax({type: "get",url: "http://www.baidu.com?_=",cache: false });
它的工作原理是在GET請求參數中附加時間戳"_={timestamp}"
?
三 源碼
?
jQuery.extend( {now: function() { // 獲取毫秒數return +( new Date() );} } );var nonce = jQuery.now(); // 加載jQuery腳本文件時,獲取時間戳。使用時每次加一。var rquery = ( /\?/ ); // 檢測問號var rts = /([?&])_=[^&]*/; // 檢測下劃線參數// Add anti-cache in url if needed if ( s.cache === false ) {s.url = rts.test( cacheURL ) ?// If there is already a '_' parameter, set its value// 如果有下劃線參數,就更新它cacheURL.replace( rts, "$1_=" + nonce++ ) :// Otherwise add one to the end// 如果沒有下劃線參數,就添加它cacheURL + ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + nonce++; }
?