防止jQuery ajax Load使用緩存的方法小結(jié)
一、用法
jquery的load函數(shù)是請求另一個文件并加載到當前DOM里的調(diào)用,load方法的完整格式是:load( url, [data], [callback] )(注意沒有參數(shù)是GET方式請求,有參數(shù)則是 POST方法)。
* url:是指要導入文件的地址。
* data:可選參數(shù);因為Load不僅僅可以導入靜態(tài)的html文件,還可以導入動態(tài)腳本,例如PHP文件,所以要導入的是動態(tài)文件時,我們可以把要傳遞的參數(shù)放在這里。
* callback:可選參數(shù);是指調(diào)用load方法并得到服務器響應后,再執(zhí)行的另外一個函數(shù)。
緩存這東西,在一定程度上加快了頁面的裝載,但是也常常給我們帶來麻煩。我在上篇文章里簡單介紹了jQuery中Load方法的使用。在實際運用中,我們可能會碰到瀏覽器緩存的問題。比如我就在IE7里碰到這個問題。
jQuery Load樣本代碼:
$(document).ready(function(){
$("#labels").load("/blog/categories/labels.html");
//在頁面裝載時,在ID為#labels的DOM元素里插入labels.html的內(nèi)容。
});
當我更新了labels.html以后,在IE7里load方法仍舊在使用舊的labels.html,就算我按刷新鍵也不管用。好在jQuery提供一個防止ajax使用緩存的方法,把下面的語句加在head的javascript文件里,就可以解決問題。
$.ajaxSetup ({
cache: false //關(guān)閉AJAX相應的緩存
});
此外我再介紹幾種方法解決緩存的方法。注意:我沒有在jQuery load的問題上測試過,這些方法僅供參考!
1.更改文件名,比如把labels.html改成lables_new.html,但是這是沒有辦法的辦法,一般沒有人這么做。
2.在labels.html后加上特定時間,比如lables.html?20081116。在實際工作中,在我更新css/javascript文件后,我都是用這種辦法來防止文件被緩存。
3.在labels.html文件的頂部加入以下聲明:
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="-1">
4.load函數(shù)不僅可以調(diào)用HTML,也可以調(diào)用script,比如labels.php,可以在php文件里使用header函數(shù):
<?php
header("Cache-Control: no-cache, must-revalidate");
?>
另外兩種解決方案:
在請求路徑中添加一個時間參數(shù)值為當前的時間或者在表單中添加一個隱藏的字段將該字段的值設置為當前時間。
相關(guān)文章
jQueryeasyui 中如何使用datetimebox 取兩個日期間相隔的天數(shù)
這篇文章主要介紹了jQueryeasyui 中使用datetimebox 取兩個日期間相隔的天數(shù),需要的朋友參考下吧2017-06-06基于jQuery實現(xiàn)Accordion手風琴自定義插件
這篇文章主要為大家詳細介紹了基于jQuery實現(xiàn)Accordion手風琴自定義插件,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-11-11使用jQuery快速解決input中placeholder值在ie中無法支持的問題
本篇文章主要介紹了使用jQuery快速解決input中placeholder值在ie中無法支持的問題。需要的朋友可以過來參考下,希望對大家有所幫助2014-01-01jQuery validate(submitHandler函數(shù))驗證通過發(fā)送Ajax(實例詳解)
這篇文章主要介紹了jQuery validate(submitHandler函數(shù))驗證通過發(fā)送Ajax,可以用validate框架驗證元素,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧2022-10-10