當前位置:首頁 » 硬碟大全 » javascript的緩存機制
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

javascript的緩存機制

發布時間: 2023-07-05 08:50:07

『壹』 iframe子頁面訪問過後相應js 緩存在瀏覽器,怎麼不緩存

這兩天遇到一個很奇怪的問題,一個頁面嵌套了一個iframe頁面,當這個頁面提交後再次跳轉到本頁面時,原本iframe內的頁面應該刷新數據的,結果在ie下面卻沒刷新(FF下沒問題),必須手動F5或者新開一個瀏覽器標簽頁瀏覽才能刷新,否則在本頁面的瀏覽器上按回車是沒用的,查閱了很多資料,最後終於發現是iframe緩存機制在搞鬼,用以下方法即可解決:

<script type="text/JavaScript">
var randomnumber=Math.floor(Math.random()*100000)

document.write('
<iframe src="http://www.freedonation.com/hunger/hunger_thankyou.php3?randomnumber='+randomnumber+'" name="aframe" width="100%" height="400"></iframe>')

</script>

通過請求多加一個值為隨機數的參數,這樣瀏覽器認為每次請求的頁面都是新的而保證了iframe頁面每次都是重新載入的。

0


0

『貳』 如何讓html頁面不緩存,js永久緩存

當瀏覽不同Url時,瀏覽器會自動將當前訪問的地址進行一次緩存;而第二次訪問時著調用緩存下來的頁面,從而達到頁面快速載入(頁面載入優化)的目的;
因此,我們可以給頁面後面設定個不同的值,讓頁面保持沒錯訪問的不同即可達到不緩存的目的了!
下面是個簡單的示例:

復制代碼 代碼如下:
<script>
document.write("<script type='text/javascript' src='/js/test.js?"+Math.random();+"'></script>");
</script>

其他的類似,只需在地址後加上+Math.random()
注意:因為Math.random() 只能在Javascript 下起作用,故只能通過Javascript的調用才可以
最後加一個ajax也不讓緩存的方法

復制代碼 代碼如下:
xmlHttp.open("GET", "ajax.asp?now=" + new Date().getTime(), true);

記得後面的now=" + new Date().getTime()是重點,需要帶參數的。
希望本文所述對大家的javascript程序設計有所幫助。
以上是雲棲社區小編為您精心准備的的內容,在雲棲社區的博客、問答、公眾號、人物、課程等欄目也有的相關內容,歡迎繼續使用右上角搜索按鈕進行搜索js , html , 頁面 不緩存 javascript 緩存、javascript 清除緩存、javascript緩存數據、javascript 本地緩存、javascript 緩存機制,以便於您獲取更多的相關知識。

『叄』 瀏覽器會緩存CDN上的javascript嗎

瀏覽器有多種緩存,問者應該問的是 200 304 這類機制,並且不考慮manifest帶來的影響,也不考慮用戶使用ctrl+F5 (mac:command+R) 強制刷新
首先,瀏覽器檢測某個靜態文件的緩存是否到期,如果到期,發請求到伺服器看文件是否已經被改變,若未改變,則返回304,不下載新的,如果改變,則返回200,並且下載新的;如果沒有到期,直接使用緩存裡面的。
所以瀏覽器緩存和請求到達的伺服器(不論是否cdn,如果上cdn則到達其中一台)上文件是否變化,緩存時間是否到期有關,與伺服器是否上cdn部署沒有關系。

『肆』 能用JS或者前端的什麼方法實現清除瀏覽器緩存嗎

可以用JS實現清除瀏覽器緩存,解決方法如下:

1、在靜態頁面也就是以.html,.jsp,.aspx,.php結尾的文件中在<dead></head>中加入以下代碼。


注意事項:

JavaScriptJavaScript基於對象和事件驅動並具有相對安全性的客戶端腳本語言。也是一種廣泛用於客戶端Web開發的腳本語言,常用來給HTML網頁添加動態功能,比如響應用戶的各種操作。

『伍』 JavaScript中如何把頁面中的圖片存入內存或cookie中,以便下一次訪問相同頁面的時候本地

圖片是不能存入cookie的~cookie只能存一些代碼或者文本之類的東西,至於內存的話就別想了,瀏覽器沒給你這個許可權,不過瀏覽器都有緩存的啊~打開之後都會把東西存入緩存,這個你就不用擔心了~然後再一個就是新的瀏覽器(IE9以上)都有前端緩存,可以參考一下~

『陸』 if (person!=null && person!="")WEB前端這個表示什麼,能分解一下嗎

1.這個if判斷代碼可能起到的作用與要達到的實際效果:

------>

person可能代表表單標簽中某個input輸入框的內容,

不管用戶做了什麼(比如什麼也不輸入就直接提交或者輸入又清空了後提交.....),

只要最後的輸入為空,就不能提交,並給出相應的提示,

這一點,我們應該有所體會了,尤其是我們在網站注冊用戶時經常遇到)


這里涉及網頁解釋執行的順序和緩存機制:

(幾乎所有的瀏覽器都支持javaScript,不支持的少數,幾乎可以排除,不使用)

網頁中的javaScript腳本代碼

往往需要在文檔載入完成後才能夠去執行,

否則可能導致無法獲取對象的情況,為了避免這種情況的發生,改變執行的先後順序,可以使用以下兩種方式:
一.將腳本代碼放在網頁的底端,這樣在運行腳本代碼的時候,可以確保要操作的對象已經載入完成。(但實際我們還是按照常規,不採用這種方式,一般為了開發效率,使用js框架,

script標簽放在head標簽內,位於正文body的前面)
二.通過原始的window.onload來執行腳本代碼(當然這是比較保險的做法)。(但實際也不採用,因為大多數都用js框架來封裝這個window.onload,使用的也是封裝後的window.onload,這也可能涉及兼容性問題)


以上2種方式都不採用,實際開發中使用js等框架,仍可能存在無法獲取對象(對象=null)問題

使用js框架往往有瀏覽器兼容性問題,不同瀏覽器有的支持,有的不支持

如果支持就能按照代碼的設想去執行,也就是框架可以使用封裝的onload改變腳本的執行順序

(當然,這是理想的情況,沒有考慮潛在兼容性問題)

如果不支持,那可能就不生效了,按照原始的從上到下的順序依次執行


這樣的情況下:

(使用js框架,script標簽放在head標簽內,位於正文body的前面,那麼)

if判斷的位置在產生person實例(body)之前,

第1次載入時:

if語句先於產生person實例執行,瀏覽器當前頁面的緩存為空,

有可能person為null的問題

(即使使用js框架去改變載入執行順序,有的瀏覽器可以做到person不為null,但這樣的改變潛在兼容性問題,有的可能不生效),

,執行if後才產生person實例,出現在瀏覽器緩存

第2次及以後的載入,瀏覽器讀取上一次時的person緩存,person不再為null

也就是,

if(person!=null),可以判斷網頁是否已經載入過person了(不再是第1次載入)

如果已經載入過了(person!=null條件成立,那麼再判斷輸入是否空輸入,""表示空輸入,輸入為空就不能提交了


關於&&邏輯操作符:

只有&&左邊的條件(person!=null)成立才會進行右邊的判斷(person!=""),否則不判斷,直接忽略這個if語句,不再執行if之後的語句體{...}


因此可以得到判斷這么寫的原因:

(不管載入執行順序如何)

只要不為null的情況下判斷輸入為空才有意義,反過來是沒有意義的

(判斷輸入為空的先決條件是person!=null)


補充:對於輸入的tips:

person!=null && person!=""

的判斷順序是不能調換的,

不能寫成 person!=""&&person!=null,

person!=""&&person!=null,

判斷順序不能調換的原因:無論person=null或者person!=null都滿足左邊的條件,雖然person=null不滿足右邊的條件,不會執行if的語句體,但person!=""沒有發揮應有的作用,因為沒有滿足person!=""判斷的先決條件