摘要:如果瀏覽器組件是有效的相互匹配原始服務(wù)器則不會(huì)返回整個(gè)組件,而是返回狀態(tài)碼。的請(qǐng)求,是不可以在客戶端緩存的,每次請(qǐng)求都需要發(fā)送給服務(wù)器進(jìn)行處理,每次都會(huì)返回狀態(tài)碼。
1、減少HTTP請(qǐng)求 why
減少響應(yīng)時(shí)間。
howCSS Sprites
合并樣式腳本
內(nèi)聯(lián)圖片(使用data:URL模式可以在web頁(yè)面中包含圖片但不需要額外的HTTP請(qǐng)求)
2、使用內(nèi)容發(fā)布網(wǎng)絡(luò)(CDN) why瀏覽器是根據(jù)域(Domain)來(lái)緩存內(nèi)容資源的,只要域不一樣,那么它就需要重復(fù)下載這些資源,而且使用同樣的方式將它們緩存起來(lái)。
帶來(lái)的問(wèn)題:重復(fù)地下載,這會(huì)占用網(wǎng)絡(luò)資源和緩存空間。
how如果有很多站點(diǎn),它們之間可以共享某些內(nèi)容(例如javascript,css,image等),那么與其每個(gè)站點(diǎn)放一份,就不如將他們統(tǒng)一地存在在一個(gè)地方,這樣就可以減少下載的次數(shù)和緩存的體積了。
如:引用jquery cdn
3、添加Expires頭 why使內(nèi)容具有緩存性
howExpires: Thu, 01 Dec 1994 16:00:00 GMT (必須是GMT格式)
通過(guò)HTTP的META設(shè)置expires和cache-control
上述設(shè)置僅為舉例,實(shí)際使用其一即可。這樣寫的話僅對(duì)該網(wǎng)頁(yè)有效,對(duì)網(wǎng)頁(yè)中的圖片或其他請(qǐng)求無(wú)效,并不會(huì)做任何cache。
4、壓縮組件 why減小文件體積,提升頁(yè)面加載速度
how壓縮腳本和樣式表
5、樣式置頂 why放在底部可能會(huì)出現(xiàn)白屏,會(huì)阻塞頁(yè)面的逐步呈現(xiàn)
注意:使用link,不使用@import(可能出現(xiàn)白屏,以及下載組件無(wú)序性)
6、腳本置底 why頁(yè)面既可以逐步呈現(xiàn),也可以提高資源下載的并行度
最差情況:放在頂部
會(huì)阻塞后面內(nèi)容的呈現(xiàn)
會(huì)阻塞其它組件的下載
7、避免使用CSS表達(dá)式 why表達(dá)式可能會(huì)運(yùn)算很多遍、影響頁(yè)面性能
how實(shí)現(xiàn)動(dòng)態(tài)CSS可以使用javascript控制
$(function () { $("dom").css("background-color",(new Date()).getHours()%2?"#EEE":"#BBB"); });8、使用外鏈JavaScript和CSS why
提高樣式和腳本復(fù)用性
注意:純粹而言,內(nèi)聯(lián)速度比外鏈快,因?yàn)橥怄滎~外增加了http請(qǐng)求,但是由于瀏覽器緩存,當(dāng)多頁(yè)面引用了同一個(gè)樣式表或腳本文件時(shí),反而減少了HTTP請(qǐng)求,實(shí)現(xiàn)復(fù)用。
how9、減少DNS查找 why
查找DNS是需要花費(fèi)時(shí)間的,通常瀏覽器在查找給定的IP地址要花費(fèi)20~120毫秒的時(shí)間,在DNS完成查找之前,瀏覽器無(wú)法從主機(jī)名下載任何東西。
how最理想的情況:只使用一個(gè)主機(jī)名,既減少了DNS查找,又最大化了并行下載。(只針對(duì)頁(yè)面組件很少(1個(gè)或2個(gè))的情況)
更現(xiàn)實(shí)的情況:使用2個(gè),但不多于4個(gè)主機(jī)名,這樣在減少DNS查找和允許高度并行下載之間做出了比較好的均衡。
10、精簡(jiǎn)JavaScript和CSS why減小文件大小,改善加載時(shí)間
how從代碼中移除不必要的字符(包括空格、注釋、換行符等)
精簡(jiǎn)JS代碼可使用JSMin
精簡(jiǎn)CSS代碼,合并相同的類,移除不使用的類,使用縮寫,如“#EEEEEE”寫成“#EEE”,“0px”寫成“0”。
11、避免重定向 why重定向是指用戶的原始請(qǐng)求重新轉(zhuǎn)向到了其它請(qǐng)求
301 Moved Permanently:這個(gè)狀態(tài)碼標(biāo)識(shí)用戶所請(qǐng)求的資源被移動(dòng)到了另外的位置,客戶端接收到此響應(yīng)后,需要發(fā)起另外一個(gè)請(qǐng)求去下載所需的資源。
302 Found:這個(gè)狀態(tài)碼標(biāo)識(shí)用戶所請(qǐng)求的資源被找到了,但不在原始位置,服務(wù)器會(huì)回復(fù)其他的一個(gè)位置,客戶端收到此響應(yīng)后,也需要發(fā)起另外一個(gè)請(qǐng)求去下載所需的資源。
目前我們一直只要區(qū)分301和302即可。他們本質(zhì)上的區(qū)別到底是什么呢?301表示永久重定向,302表示臨時(shí)重定向。
how在定義鏈接地址的href屬性的時(shí)候,盡量使用最完整的、直接的地址。例如:
使用 www.google.com 而不是google.com
使用cn.xxxx.com而不是xxxx.com
使用www.google.com.hk而不是google.com
使用www.site.com/products/而不是www.site.com/products
重復(fù)腳本損傷性能:不必要的HTTP請(qǐng)求及執(zhí)行JS所浪費(fèi)的時(shí)間
how確保腳本只被加載一次。使用模塊化工具如requireJS或seaJS管理腳本。
13、配置ETag(實(shí)體標(biāo)簽)它的作用是用一個(gè)特殊的字符串來(lái)標(biāo)識(shí)某個(gè)資源的“版本”,客戶端(瀏覽器)請(qǐng)求的時(shí)候,比較ETag如果一致,則表示該資源并沒(méi)有被修改過(guò),客戶端(瀏覽器)可以使用自己緩存的版本,避免重復(fù)下載。
服務(wù)器檢測(cè)緩存組件和原始服務(wù)器組件匹配的方式
如果緩存組件過(guò)期了或者用戶明確地重新加載了頁(yè)面,瀏覽器在重用之前必須首先檢查它是否有效。這稱作一個(gè)條件GET請(qǐng)求。雖然瀏覽器必須產(chǎn)生這個(gè)http請(qǐng)求,但是仍比簡(jiǎn)單地下載所有已過(guò)期的組件效率高。如果瀏覽器組件是有效的(相互匹配)原始服務(wù)器則不會(huì)返回整個(gè)組件,而是返回304 not modifed狀態(tài)碼。
檢測(cè)匹配有兩種方式
比較最新修改日期
第一次請(qǐng)求響應(yīng)
————> GET /i/xx.jpg HTTP 1.1 HOST www.xxx.com <———— HTTP 1.1 20 OK Last-Modified:true .12 dec 2015 03:03:09 GMT Content-Length:1024
第二次請(qǐng)求響應(yīng)
————> GET /i/xx.jpg HTTP 1.1 HOST www.xxx.com If-Modified-Since:True,12 dec 2015 03:03:09 GMT <———— HTTP 1.1 304 not modifed
比較實(shí)體標(biāo)簽
實(shí)體是我們之前提到的組件的另一種稱呼。ETag是唯一標(biāo)識(shí)了一個(gè)組件的一個(gè)特定版本的字符串,必須帶上引號(hào)。這種為驗(yàn)證實(shí)體提供了更為靈活的機(jī)制——可以根據(jù)user-agent,accept-language頭而改變。
第一次請(qǐng)求響應(yīng)
————> GET /i/xx.jpg HTTP 1.1 HOST www.xxx.com <———— HTTP 1.1 20 OK Last-Modified:true .12 dec 2015 03:03:09 GMT ETag:"10c34ba-8ba-abds3b3" Content-Length:1024
第二次請(qǐng)求響應(yīng)
————> GET /i/xx.jpg HTTP 1.1 HOST www.xxx.com If-Modified-Since:True,12 dec 2015 03:03:09 GMT If-None-Match:"10c34ba-8ba-abds3b3" <———— HTTP 1.1 304 not modifed
ETag帶來(lái)的問(wèn)題
如果部署在服務(wù)器場(chǎng)環(huán)境中,配置不當(dāng)?shù)脑?,可能每個(gè)服務(wù)器會(huì)對(duì)相同的資源生成不一樣的ETag,這樣就增加了重復(fù)下載的可能性。
ETag的優(yōu)勢(shì)和特點(diǎn)
可以更加精確地判斷資源是否被修改,因?yàn)樗皇且粋€(gè)時(shí)間值,而是對(duì)時(shí)間經(jīng)過(guò)處理的一個(gè)長(zhǎng)整型數(shù)值(當(dāng)然具體算法我們目前還不得而知)。
瀏覽器發(fā)起新請(qǐng)求時(shí)需要包含 If-None-Match。
14、使Ajax可緩存 why由于AJAX其實(shí)也是需要發(fā)起請(qǐng)求,然后服務(wù)器執(zhí)行,并將結(jié)果(通常是JSON格式的)發(fā)送給瀏覽器進(jìn)行最后的呈現(xiàn)或者處理,所以對(duì)于網(wǎng)站設(shè)計(jì)優(yōu)化的角度而言,我們同樣需要考慮對(duì)這些請(qǐng)求,是否可以盡可能的利用到緩存的功能來(lái)提高性能。
how對(duì)于AJAX而言,有一些特殊性,并不是所有的AJAX請(qǐng)求都是可以緩存的。
POST的請(qǐng)求,是不可以在客戶端緩存的,每次請(qǐng)求都需要發(fā)送給服務(wù)器進(jìn)行處理,每次都會(huì)返回狀態(tài)碼200。(這里可以優(yōu)化的是,服務(wù)器端對(duì)數(shù)據(jù)進(jìn)行緩存,以便提高處理速度)
GET的請(qǐng)求,是可以(并且默認(rèn))在客戶端進(jìn)行緩存的,除非指定了不同的地址,否則同一地址的AJAX請(qǐng)求,不會(huì)重復(fù)再服務(wù)器執(zhí)行,而是返回304。
有的時(shí)候,我們可能希望GET請(qǐng)求不被緩存,有幾種做法來(lái)達(dá)到這樣的目的。
每次調(diào)用的時(shí)候,請(qǐng)求不同的地址(可以在原始地址后面添加一個(gè)隨機(jī)的號(hào)碼)。
如果你所使用的是jquery的話,則可以考慮禁用AJAX的緩存。
$.ajaxSetup({ cache: false });15、使用GET來(lái)完成Ajax請(qǐng)求 why
1、POST請(qǐng)求,不能使用客戶端緩存
2、GET請(qǐng)求,可以使用客戶端緩存
這個(gè)意義上來(lái)講,使用GET會(huì)比POST而言,因?yàn)闇p少了請(qǐng)求數(shù)和數(shù)據(jù)的重復(fù)傳輸,有更好的一個(gè)性能表現(xiàn)。
在使用XMLHttpRequest(目前的AJAX都是基于它實(shí)現(xiàn)的)的時(shí)候,瀏覽器中的POST實(shí)現(xiàn)為兩步走的過(guò)程,首先發(fā)送頭部信息,然后再發(fā)送數(shù)據(jù)。但如果是使用GET的話,就只有一個(gè)TCP的包發(fā)送出去(除非有大量的Cookie),這樣無(wú)疑可以提高性能。
【備注】一個(gè)TCP包的尺寸大約為1452字節(jié)。 除此之外,顯示的項(xiàng)目中,并不是總能使用GET的,例如長(zhǎng)度方面可能會(huì)有限制:The maximum URL length in IE is 2K, so if you send more than 2k data you might not be able to use GET.
16、減少DOM元素?cái)?shù)量 whyDOM(Document Object Model)文檔對(duì)象模型
HTML DOM 定義了訪問(wèn)和操作 HTML 文檔的標(biāo)準(zhǔn)方法。
DOM 將 HTML 文檔表達(dá)為樹(shù)結(jié)構(gòu)。
減少頁(yè)面的DOM元素?cái)?shù)量,有助于減小頁(yè)面體積,并且也降低了維護(hù)這份DOM樹(shù)的成本。
1、避免不正確地使用服務(wù)器控件。
2、減少不必要的內(nèi)容(并不是所有的內(nèi)容都必須放在頁(yè)面上面的)。
如果數(shù)據(jù)量大,可以考慮分頁(yè),或者按需加載
17、避免404 why什么情況下會(huì)發(fā)生404錯(cuò)誤?
404 意味著Not Found,意思是說(shuō)未找到資源。至少會(huì)有兩種原因?qū)е?04錯(cuò)誤:
1、該資源按理說(shuō)是要有,但我們沒(méi)有提供。用戶按照正常的方式來(lái)請(qǐng)求,所以資源找不到。
2、該資源本來(lái)就不存在,用戶按照不正常的方式來(lái)請(qǐng)求,當(dāng)然還是找不到。
404錯(cuò)誤會(huì)有什么影響?
① 看不到的影響:有時(shí)候,404錯(cuò)誤發(fā)生了,用戶可能根本沒(méi)有感覺(jué)到。
例如請(qǐng)求favicon.ico文件,或者請(qǐng)求了某個(gè)不存在的腳本文件、樣式表、圖片文件,頁(yè)面還是會(huì)按照正常的方式進(jìn)行呈現(xiàn)。
丟失的腳本文件、樣式表、圖片文件,會(huì)導(dǎo)致頁(yè)面的某些行為、界面效果出現(xiàn)異常(也可能不是很明顯)
最大的問(wèn)題可能是性能方面的影響。尤其是如果請(qǐng)求一個(gè)不存在的腳本文件,因?yàn)闉g覽器在請(qǐng)求腳本文件的時(shí)候,即便是返回404,它也會(huì)嘗試去按照J(rèn)avascript的方式解析響應(yīng)中的內(nèi)容。這無(wú)疑會(huì)增加很多處理的時(shí)間,而因?yàn)樵撐募淮嬖冢赃@些都是無(wú)用功。
② 看得到的影響:
如果用戶請(qǐng)求的某個(gè)頁(yè)面不存在,那么他將收到明確的回應(yīng)
默認(rèn)情況下,他將收到一個(gè)標(biāo)準(zhǔn)的錯(cuò)誤頁(yè)面(請(qǐng)注意:不少用戶會(huì)被這個(gè)頁(yè)面嚇到)
how避免404錯(cuò)誤發(fā)生的措施:
為網(wǎng)站提供favicon.ico。
在發(fā)布網(wǎng)站前的測(cè)試工作中,運(yùn)行Link checker工具,確保所有鏈接都是能夠訪問(wèn)到的。這個(gè)工具是W3C發(fā)布的,完全免費(fèi),你值得擁有。
為了避免用戶收藏絕對(duì)地址(customer.aspx),給后期更新帶來(lái)隱患??梢钥紤]在設(shè)計(jì)階段采用 Url Rewriting 或者 Routing 等技術(shù)來(lái)實(shí)現(xiàn)更加友好和靈活的地址(例如/Customer),以后如果業(yè)務(wù)邏輯有變化,只需要修改一下路由規(guī)則即可。
第三條措施,同樣可以盡可能地減少用戶手工輸入地址出錯(cuò)的機(jī)會(huì)。18、減少Cookie的大小 why
如果對(duì)某個(gè)域(Domain)保存了Cookie,那么針對(duì)這個(gè)域的所有請(qǐng)求,都會(huì)發(fā)送這些所有的Cookie(哪怕當(dāng)前請(qǐng)求根本用不著,例如針對(duì)圖片的請(qǐng)求),大量的、重復(fù)的發(fā)送Cookie毫無(wú)疑問(wèn)會(huì)增加網(wǎng)絡(luò)的流量,并因此而降低請(qǐng)求被執(zhí)行的性能。
how從技術(shù)上說(shuō),這個(gè)文件的內(nèi)容是由網(wǎng)站控制的,它可以決定要寫什么內(nèi)容在里面,他也可以決定是否要加密。唯一的一個(gè)限制,這個(gè)文件的體積不允許超過(guò)4KB。
19、使用無(wú)Cookie的域 why比如圖片 CSS 等,Yahoo! 的靜態(tài)文件都在主域名以外,客戶端請(qǐng)求靜態(tài)文件的時(shí)候,減少了 Cookie的反復(fù)傳輸對(duì)主域名的影響。
只有訪問(wèn)主域名的時(shí)候才需要保存cookie,而cookie會(huì)自動(dòng)地發(fā)送給當(dāng)前域的所有請(qǐng)求。
Filters這個(gè)功能是IE當(dāng)年為了提供更加豐富的一些頁(yè)面效果而設(shè)計(jì)出來(lái)的。
不僅僅是別的瀏覽器可能不支持,IE從9.0版本開(kāi)始也放棄了這方面的支持。
有時(shí)得到的圖片尺寸和具體顯示尺寸不一樣,為了在網(wǎng)頁(yè)中顯示出希望的尺寸,通常會(huì)通過(guò)下面的方法把圖片進(jìn)行縮放:
瀏覽器下載到原始圖片之后,如果原始尺寸與目標(biāo)尺寸不符,就會(huì)需要對(duì)圖片進(jìn)行縮放(拉伸或者縮?。员銓?shí)現(xiàn)剛才所提到的目的。
how我們需要在網(wǎng)頁(yè)中顯示什么尺寸的圖片,就請(qǐng)圖片設(shè)計(jì)人員提供什么尺寸的圖片,而不是在網(wǎng)頁(yè)中進(jìn)行縮放。
22、縮小favicon.icon并緩存 why1、每個(gè)網(wǎng)站都應(yīng)該有該文件,瀏覽器在訪問(wèn)任何頁(yè)面的時(shí)候,總是會(huì)嘗試去請(qǐng)求這個(gè)文件(如果本地沒(méi)有的話)。
2、該文件通常應(yīng)該命名為favicon.ico ,如果希望使用別的名稱或者格式(例如PNG),則需要在頁(yè)面的頭部(Head)中定義引用(下面兩句中的第一句是必須的)
3、該文件可以直接放在網(wǎng)站根目錄,但也可以放在其他的主機(jī),或者你想要的任何位置。如果不在默認(rèn)的根目錄下面,也是需要通過(guò)上面所提到的引用方式定義。
how使它盡量在1KB左右。想比較其他的格式(PNG,GIF等),該文件默認(rèn)的格式為ico,這種文件通常較小。要?jiǎng)?chuàng)建favicon.ico文件,可以使用 http://www.favicon.cc/ 提供的在線免費(fèi)服務(wù)。
使它能夠緩存。 由于該文件使用很頻繁,所以緩存顯得很重要。對(duì)于這個(gè)文件而言,可以設(shè)置永不過(guò)期(或者過(guò)期時(shí)間長(zhǎng)一些)。
將該文件放在多帶帶的主機(jī)中,可以避免在請(qǐng)求該文件時(shí)發(fā)送cookie。
23、避免空的src和href why空的src和href都會(huì)導(dǎo)致多余的HTTP請(qǐng)求,雖然不影響加載時(shí)間,但是會(huì)對(duì)服務(wù)器產(chǎn)生不必要的流量和壓力,嚴(yán)重的以至于影響整個(gè)網(wǎng)站的用戶體驗(yàn)。
例子:
在頁(yè)面加載的過(guò)程中,一個(gè)有著空src屬性的img元素被JavaScript動(dòng)態(tài)地賦值。這樣做的問(wèn)題是,在腳本執(zhí)行之前元素就被瀏覽器渲染了(尤其是當(dāng)你把腳本放到文檔最后的時(shí)候)。所以瀏覽器依然會(huì)發(fā)起一個(gè)HTTP 請(qǐng)求,雖然它是一個(gè)空值。
雅虎的團(tuán)隊(duì)指出,如果你將img的src留空,可能你的本意是暫時(shí)不要顯示任何圖片,但在不同的瀏覽器其實(shí)還是會(huì)有一些額外的請(qǐng)求發(fā)生。
例子:
同樣的問(wèn)題也發(fā)生在href 這個(gè)屬性上。有些時(shí)候,開(kāi)發(fā)人員想用超鏈接來(lái)觸發(fā)JavaScript的一個(gè)交互。這時(shí)問(wèn)題就來(lái)了,當(dāng)用戶觸發(fā)了“單擊”操作,如果 href 是空的那么瀏覽器就向服務(wù)器發(fā)送一個(gè)HTTP 請(qǐng)求。
避免空的src和herf值。
解決留空src屬性的問(wèn)題:
你可以將初始圖片設(shè)置為一個(gè)很小的默認(rèn)圖片(這個(gè)圖片設(shè)置永不過(guò)期),而不是留空。
解決留空href屬性的問(wèn)題:
給標(biāo)簽以href屬性,并不連接到實(shí)際的頁(yè)面:
禁止跳轉(zhuǎn),并添加cursor:pointer樣式
點(diǎn)擊一 點(diǎn)擊二
給a 標(biāo)簽創(chuàng)建一個(gè)帶有描述信息的href 屬性,并監(jiān)控click事件調(diào)用preventDefault()函數(shù)。
Trigger
優(yōu)點(diǎn):
讓夠響應(yīng)鍵盤事件并獲得焦點(diǎn)(從而屏幕閱讀器能夠讀出背后的內(nèi)容,增強(qiáng)可訪問(wèn)性)
優(yōu)雅降級(jí),在網(wǎng)絡(luò)連接很差,還沒(méi)有加載到CSS的時(shí)候,依然有手型與正常的link樣式。
參考:YSlow團(tuán)隊(duì)的23條“Web性能最佳實(shí)踐和規(guī)則”+《高性能網(wǎng)站建設(shè)指南》
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/85072.html
摘要:譯文地址譯唯快不破應(yīng)用的個(gè)優(yōu)化步驟前端的逆襲知乎專欄原文地址時(shí)過(guò)境遷,應(yīng)用比以往任何時(shí)候都更具交互性。使用負(fù)載均衡方案我們?cè)谥坝懻摼彺娴臅r(shí)候簡(jiǎn)要提到了內(nèi)容分發(fā)網(wǎng)絡(luò)。換句話說(shuō),元素的串形訪問(wèn)會(huì)削弱負(fù)載均衡器以最佳形式 歡迎關(guān)注知乎專欄 —— 前端的逆襲歡迎關(guān)注我的博客,知乎,GitHub。 譯文地址:【譯】唯快不破:Web 應(yīng)用的 13 個(gè)優(yōu)化步驟 - 前端的逆襲 - 知乎專欄原文地...
摘要:規(guī)則使用內(nèi)容發(fā)布網(wǎng)絡(luò)用戶同服務(wù)器的距離會(huì)對(duì)頁(yè)面響應(yīng)時(shí)間產(chǎn)生影響。這不僅能達(dá)到響應(yīng)時(shí)間大幅減少的目的,還很容易實(shí)現(xiàn)。提供動(dòng)態(tài)頁(yè)面會(huì)引入特殊的存儲(chǔ)要求數(shù)據(jù)庫(kù)連接狀態(tài)管理驗(yàn)證硬件和優(yōu)化等,這些復(fù)雜性超過(guò)了的范圍。 鏈接參考: https://developer.yahoo.com/performance/rules.html 只有10%~20%的最終用戶響應(yīng)時(shí)間花在了下載HTML文檔上...
摘要:自己是做前端開(kāi)發(fā)的,在性能方面,根據(jù)的調(diào)查,后臺(tái)只占,而前端高達(dá)之多,其中有的東西是可以優(yōu)化的。相信很多人都聽(tīng)過(guò)優(yōu)化網(wǎng)站性能的條規(guī)則。淘寶和阿里巴巴中文站目前都是這樣做的。目前的瀏覽器都能良好地支持。 相信互聯(lián)網(wǎng)已經(jīng)越來(lái)越成為人們生活中不可或缺的一部分。Ajax,flex等等富客戶端的應(yīng)用使得人們?cè)郊有腋5伢w驗(yàn)著許多原先只能在C/S實(shí)現(xiàn)的功能。比如Google機(jī)會(huì)已經(jīng)把最基本的o...
摘要:自己是做前端開(kāi)發(fā)的,在性能方面,根據(jù)的調(diào)查,后臺(tái)只占,而前端高達(dá)之多,其中有的東西是可以優(yōu)化的。相信很多人都聽(tīng)過(guò)優(yōu)化網(wǎng)站性能的條規(guī)則。淘寶和阿里巴巴中文站目前都是這樣做的。目前的瀏覽器都能良好地支持。 相信互聯(lián)網(wǎng)已經(jīng)越來(lái)越成為人們生活中不可或缺的一部分。Ajax,flex等等富客戶端的應(yīng)用使得人們?cè)郊有腋5伢w驗(yàn)著許多原先只能在C/S實(shí)現(xiàn)的功能。比如Google機(jī)會(huì)已經(jīng)把最基本的o...
摘要:渲染引擎的概述渲染引擎的主要職責(zé)是在瀏覽器屏幕上顯示請(qǐng)求的頁(yè)面。中,渲染樹(shù)中的每個(gè)節(jié)點(diǎn)都被稱為的渲染器或渲染對(duì)象。坐標(biāo)系相對(duì)于根渲染器。增量只有一些渲染器以不影響整個(gè)樹(shù)的方式進(jìn)行更改。渲染器使其矩形在屏幕上無(wú)效。 到目前為止,在我們之前的JavaScript工作原理系列文章中,我們一直關(guān)注JavaScript作為一種語(yǔ)言,其功能,它如何在瀏覽器中執(zhí)行,如何優(yōu)化等等。 但是,當(dāng)您構(gòu)建We...
閱讀 3016·2021-09-10 10:50
閱讀 3217·2019-08-30 14:19
閱讀 3545·2019-08-29 17:31
閱讀 3279·2019-08-29 16:43
閱讀 2219·2019-08-29 14:05
閱讀 2115·2019-08-29 13:17
閱讀 2074·2019-08-26 13:25
閱讀 1798·2019-08-26 12:20