国产高清在线免费观看-国产高清在线免费无码-国产高清在线男人的天堂-国产高清在线视频-国产高清在线视频精品视频-国产高清在线视频伊甸园

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

瀏覽器根據(jù)什么來(lái)判定腳本失控?

admin
2011年3月10日 12:10 本文熱度 3578
在Web開發(fā)的時(shí)候,經(jīng)常會(huì)遇到的一種情況就是瀏覽器提示腳本運(yùn)行時(shí)間過(guò)長(zhǎng),停止還是繼續(xù),無(wú)論你選擇什么,相信你都會(huì)想盡一切辦法讓這個(gè)對(duì)話框遠(yuǎn)離你的用戶們。可你是否知道,這些不同的瀏覽器究竟是如何判斷,哪些腳本處于“失控”狀態(tài)么?本文作者,就從Internet Explorer、Firefox、Safari、Chrome和Opera五種瀏覽器,分析了這個(gè)情況出現(xiàn)的原因。

原文標(biāo)題:What determines that a script is long-running?
原文作者:Nicholas C. Zakas

以下是對(duì)原文的翻譯:

Web開發(fā)者經(jīng)常遇到并必須及時(shí)處理的問(wèn)題就是“提示腳本運(yùn)行時(shí)間過(guò)長(zhǎng)的提示框”(或者稱為“失控腳本提示”),這些令人討厭的對(duì)話框會(huì)在你的腳本 執(zhí)行時(shí)間過(guò)長(zhǎng)的時(shí)候出現(xiàn)。對(duì)于Web開發(fā)者的基本準(zhǔn)則就是,無(wú)論什么時(shí)候,都不要讓用戶看到這些對(duì)話框,因?yàn)檫@會(huì)給人一種代碼缺乏結(jié)構(gòu)化的印象,更簡(jiǎn)單的 說(shuō),你的代碼負(fù)擔(dān)太重了。

用Brendan Eich(JavaScript的發(fā)明人)的話來(lái)講,如果JavaScript運(yùn)行的時(shí)間需要用秒來(lái)計(jì)算,一定是什么地方搞錯(cuò)了。我個(gè)人可以忍受的上限可 能更小一些,不論什么腳本,在任何時(shí)間、任何瀏覽器上執(zhí)行,都不應(yīng)該超過(guò)100毫秒。如果實(shí)際執(zhí)行的時(shí)間長(zhǎng)于這個(gè)底限,一定要將進(jìn)程分解成若干更小的代碼 段。

另外,其實(shí)很少有人真正意識(shí)到究竟是什么原因?qū)е履_本在不同的瀏覽器中運(yùn)行時(shí)間過(guò)長(zhǎng),連我自己都沒有深究過(guò)。所以我決定坐下來(lái)好好研究一下,我們究 竟會(huì)在什么情況才會(huì)看到那個(gè)討厭的對(duì)話框。判斷腳本是否失控,無(wú)外乎就兩種方法。一種是根據(jù)執(zhí)行了多少條語(yǔ)句,一種是判斷腳本執(zhí)行花費(fèi)的時(shí)間。各個(gè)瀏覽器 判斷腳本失控的具體方法會(huì)有略微的不同。

Internet Explorer

Internet Explorer判斷一個(gè)腳本是否失控,主要通過(guò)JScript引擎執(zhí)行語(yǔ)句的總數(shù)來(lái)判斷。默認(rèn)情況下,這個(gè)上限是500萬(wàn)條語(yǔ)句,這個(gè)值是可以通過(guò)注冊(cè)表修改的。當(dāng)你的腳本執(zhí)行的語(yǔ)句數(shù)量超過(guò)這個(gè)限制,你就會(huì)看到下面的窗口。



這個(gè)對(duì)話框提示:“這個(gè)頁(yè)面上有一段腳本導(dǎo)致Internet Explorer運(yùn)行緩慢,如果你繼續(xù)運(yùn)行,你的計(jì)算機(jī)可能會(huì)變?yōu)闊o(wú)響應(yīng)狀態(tài)”。要不是追求技術(shù)上的準(zhǔn)確性,這樣說(shuō)確實(shí)有點(diǎn)過(guò)了。對(duì)話框有兩個(gè)選項(xiàng),要么 停止腳本執(zhí)行,要么允許腳本繼續(xù)運(yùn)行。當(dāng)這個(gè)對(duì)話框顯示的時(shí)候,腳本已經(jīng)被完全停止了。如果你選擇繼續(xù)運(yùn)行腳本,就會(huì)重新計(jì)算當(dāng)前執(zhí)行的語(yǔ)句數(shù),也就是 說(shuō),如果這個(gè)數(shù)值再次達(dá)到上限時(shí),你會(huì)再次看到這個(gè)對(duì)話框。

Firefox

Firefox是根據(jù)腳本引擎持續(xù)執(zhí)行代碼的時(shí)間來(lái)判斷一段腳本是否失控。默認(rèn)的上限是10秒,可以通過(guò)about:config頁(yè)面來(lái)修改這個(gè)值。這里需要注意的是,當(dāng)彈出類似alert的模式對(duì)話框的時(shí)候,是不計(jì)時(shí)的。當(dāng)瀏覽器執(zhí)行腳本的時(shí)間達(dá)到這個(gè)上限,F(xiàn)irefox就會(huì)顯示類似下面的對(duì)話框:



Firefox的對(duì)話框提示:“這個(gè)頁(yè)面的一段腳本目前運(yùn)行忙,或者這段腳本已經(jīng)停止響應(yīng)。你可以停止執(zhí)行這段腳本,并在調(diào)試器中打開這段腳本,或 者保持這段腳本繼續(xù)運(yùn)行”。更清楚的描述了遇到的問(wèn)題,并且沒有IE說(shuō)的那么恐怖。在這個(gè)對(duì)話框上可以執(zhí)行三種操作:停止腳本執(zhí)行、調(diào)試腳本或者讓腳本繼 續(xù)運(yùn)行。和Internet Explorer一樣,當(dāng)運(yùn)行腳本繼續(xù)運(yùn)行以后,對(duì)持續(xù)運(yùn)行腳本時(shí)間的統(tǒng)計(jì)就會(huì)重置。調(diào)試腳本按鈕,只有在你安裝了Firebug,并在該頁(yè)面激活了調(diào)試 的時(shí)候才會(huì)出現(xiàn)。執(zhí)行調(diào)試腳本操作后,可以顯示執(zhí)行時(shí)間過(guò)長(zhǎng)的代碼段的具體位置。

Safari

Safari同樣根據(jù)腳本引擎持續(xù)執(zhí)行腳本的時(shí)間來(lái)判斷,當(dāng)我對(duì)Webkit的源代碼進(jìn)行反復(fù)研究后,發(fā)現(xiàn)默認(rèn)的超時(shí)時(shí)間是5秒,一旦達(dá)到這個(gè)上限,就會(huì)給出下面的對(duì)話框提示:



對(duì)話框提示:“在頁(yè)面url上的腳本讓Safari失去響應(yīng),你是要繼續(xù)運(yùn)行腳本還是終止腳本”。同樣的,對(duì)于用戶來(lái)說(shuō),也不是什么可怕的提示。在Safari中,可以關(guān)閉失控腳本的檢測(cè)功能。

Chrome

Chrome在跟蹤技術(shù)上有點(diǎn)狡猾,失控腳本檢測(cè)功能似乎和tab的事故控制(crash control)關(guān)聯(lián)到一起。我仔細(xì)看了源代碼,卻沒有找到具體的限制,但基本確定的是,這個(gè)限制是以時(shí)間為基礎(chǔ)的,估計(jì)在10秒左右(要么是5秒,要么 是10秒,總要和Safari或者Firefox看齊么)。我正在聯(lián)系Chrome項(xiàng)目組中的朋友,看看能不能得到確定的信息。盡管如此,如果網(wǎng)頁(yè)中存在 失控的腳本,用戶還是會(huì)看到下面的對(duì)話框:



毫無(wú)疑問(wèn),Chrome的提示比起其他瀏覽器來(lái)說(shuō),顯得都更加嚴(yán)重。點(diǎn)擊“Wait”按鈕,腳本會(huì)繼續(xù)運(yùn)行,直到達(dá)到下一個(gè)上限為止,也可以點(diǎn)擊“Kill pages”,直接關(guān)閉該頁(yè)面在內(nèi)存中的所有信息,并用一個(gè)空白頁(yè)取而代之。

Opera

Opera的情況比較有趣:他貌似沒有針對(duì)失控腳本的相應(yīng)限制。我運(yùn)行了幾個(gè)很長(zhǎng)的測(cè)試,甚至花了幾分鐘,而在這個(gè)過(guò)程中,瀏覽器一直可以正常響應(yīng),這很出我的意料之外。我不是很確定,對(duì)于現(xiàn)在的情況來(lái)說(shuō),這個(gè)方法是好是壞,但至少它生效了,不是么?

一些建議

無(wú)論你的用戶使用什么瀏覽器,都不應(yīng)該在任何時(shí)候看到類似的提示。在你的網(wǎng)站或者Web應(yīng)用程序作為產(chǎn)品發(fā)布之前,做一些常規(guī)的性能測(cè)試是非常有必要的。在這方面有很多工具可以加以利用,比如Firebug's profiler(只支持Firefox)、YUI Profiler (支持全部瀏覽器)或者Internet Explorer 8's Profiler。 你應(yīng)該毫不猶豫地將那些執(zhí)行時(shí)間超過(guò)100毫秒的腳本找出來(lái),哪怕這些腳本只是在某些瀏覽器上運(yùn)行不暢,這些腳本包含了一些需要執(zhí)行很長(zhǎng)時(shí)間的代碼段,而 這些代碼應(yīng)該通過(guò)性能檢測(cè)工具進(jìn)行重新評(píng)估。確保你不是使用Chrome作為測(cè)試的底線,因?yàn)镃hrome在執(zhí)行JavaScript的速度上比其他瀏覽 器要高出一個(gè)數(shù)量級(jí)(和Firefox 3.1還有最新的WebKit Nightly相當(dāng))。最好使用Internet Explorer作為測(cè)試的底線,然后再測(cè)試其他瀏覽器,因?yàn)闊o(wú)論什么時(shí)候,IE的JavaScript引擎都是最慢的,當(dāng)在IE上修復(fù)問(wèn)題以后,十有八 九在其他瀏覽器上也可以正常運(yùn)行了。

該文章在 2011/3/10 12:10:38 編輯過(guò)
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 三级特黄60分钟在线观看 | 日韩精品区一区二区三vr | 久久国产精品无码一级毛片 | 偷偷撸在线影院 | 无码av免费精品一区二区三区 | 99热在这里只有免费精品 | 亚洲 日本 中文字幕 制服 | 亚洲欧美中文字幕5发布 | 亚洲性欧美在线se | 国产精品久久久久久久久齐齐 | 亚洲线精品一区二区三区影音先锋 | 亚洲欧美日韩中文字幕在线一区 | 国产亚洲av午夜剧场 | 李宗瑞全局修复108集 | 一本之道高清无码视频 | 糙汉顶弄抽插HHHH | 性猛交富婆ⅹxxx乱大交 | 久久久久久自慰出白浆 | 午夜福利理论片在线观 | 亚洲老妇色熟女老太 | 欧美国产激情二区三区-免费A片 | 亚洲色www成人永久网址 | 91精品三级在线观看播放 | 日韩毛片无码中文专区 | 免费无遮挡禁18污污网站 | 亚洲欧美日韩精品久久 | 亚洲国色天香卡2卡3卡4 | 久久精品ⅴ无码中文字幕 | 成人性生交片无码免费看 | 十八禁无遮挡99精品国产 | 亚洲熟妇无码一区二区三区导航 | 精品人无码一区二区三区 | 国产色精品久久人妻无码看片软件一区一个亚洲 | 麻豆91av| 亚洲一级毛片在线观看 | 亚洲欧美精品综合在线观看 | 明星性猛交ⅹxxx乱大交 | 亚洲av日韩av永久在线观看 | 专区人妻系列日韩精品 | 亚洲性色永久免费网址 | 国产麻豆亚洲精品一区二区 |