使你的網(wǎng)站快速跑起來

性能真的很重要嗎?
性能很重要,這個大家都知道。為什么我們還要做出速度很慢的網(wǎng)站,給用戶一個糟糕的體驗?zāi)??呵呵,讓我們進入重點。
HTML
一.避免內(nèi)鏈/嵌入式代碼:
1) 內(nèi)聯(lián)式: 在HTML標(biāo)簽的style屬性中定義樣式,在onclick這樣的屬性中定義Javascript代碼;
2) 嵌入式: 在頁面中使用<style>標(biāo)簽定義樣式,使用<script>標(biāo)簽定義Javascript代碼;
3) 引用外部文件: 在<style>標(biāo)簽中定義href屬性引用CSS文件,在<script>標(biāo)簽中定義src屬性引入Javascript文件.
1,2雖然減少了http請求數(shù),但是增加了html的大小,相比3的總體大小甚小,便于分工操作,便于維護。
二.樣式在上,腳本在下:
<html> <head> <meta charset="UTF-8"> <title>Browser Diet</title> <!-- CSS --> <link rel="stylesheet" href="style.css" media="all"> </head> <body> <a>hello</a> <!-- JS --> <script async src="script.js"></script> </body> </html>
1)樣式在head里面,頁面渲染很快,會使用戶感覺頁面加載很快。反之,會先看到錯亂的頁面布局,給人感覺不好。
2)腳本在上會影響html的渲染或并行加載,并且首屏加載,用戶一般不需要看到功能,所以腳本在下為好。嘗試用異步加載腳本的屬性:async
三.壓縮html
為了保持代碼的可讀性,最好的方法是在代碼中添加注釋和使用縮進。
但是對于瀏覽器來說,這些都是不重要的。正因為如此,通過自動化工具壓縮你的HTML是非常有用的。
通過移除多余的空白符、注釋和一些與內(nèi)容結(jié)構(gòu)無關(guān)的的不需要的字符,能夠節(jié)省一些字節(jié)。嘗試用gzip壓縮方式。
四.減少dom結(jié)點
用語義化的標(biāo)簽來代替萬能的div。
五.《html寫法對gzip壓縮率的影響》
書寫標(biāo)簽屬性時,最好多個相同標(biāo)簽屬性值順序一致??梢允筭zip壓縮更快。
CSS
一.壓縮css
通過自動化工具壓縮css,同壓縮html。重復(fù)性的代碼學(xué)會提煉。
二.合并多個css
普遍通過cdn合并或公司的合并工具進行合并,有效減少http請求數(shù)量。
三.合理使用css表達式
不是所有人都能合理使用css表達式的。所以把功能都交給javascript。css我們要休息一下嘍。
IMAGES
一.使用css sprite
將psd里面小的圖層整合到一張圖層里面,布局完成。布局要緊促。對于有些圖片有毛邊的,可以設(shè)置雜邊的顏色。也可以將png-8設(shè)置成png-24(ie6濾鏡處理)
二.用base64圖片編碼替代普通css sprite圖片
使用前:
.img { background-image: url('image.png'); }
使用后:
.img { background-image: url('data:image/png;base64,iVBORw0KGgo');}
base64圖片編碼只針對于單獨的圖片,而不是css sprite圖片,支持主流瀏覽器及ie8以上??梢詼p少http請求數(shù)量,但是對于沒有g(shù)zip壓縮的html,css來說,減少http請求得來的大文件是不可取的。
三.優(yōu)化圖片
圖片格式要控制好,在圖片質(zhì)量ok的情況下,png,jpg,gif格式根據(jù)情況合理利用。一般css sprite用png格式,動畫圖片用gif格式,色彩鮮艷的廣告圖片用jpg.
圖片大小要控制好,網(wǎng)站可以緩存圖片。一般一張廣告圖片要在100k左右,如果圖片實在太大,可以將一張圖片切成幾塊,拼接而成。
某前端css網(wǎng)站聲明,凡是必須用圖片來布局的都是耍流氓。隨著css3的流行,這句話將成為一句座右銘。
四.《Progressive JPEG 解析》
綜述,連續(xù)的jpg格式對性能更好。
JAVASCRIPT
一.異步加載文件
var vst = document.createElement('script'); vst.type = 'text/javascript'; vst.async = true; vst.src =srcIndex; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(vst, s);
當(dāng)一些第三方文件等下載成了問題,或是導(dǎo)致頁面加載負(fù)重。我們就需要異步加載這些文件,async是個好的方式。
二.將循環(huán)的對象存儲
使用前:
var str = "nanananana"; for (var n = 0; n < str.length; n++) {}
使用后:
var str = "nanananana", strLgth = str.length; for (var n = 0; n < strLgth ; n++) {}
循環(huán)對性能的消耗是很大的,將循環(huán)的對象存儲,減少每次循環(huán)都要進行對象的計算。
三.最小化減少回流和重繪
使用前:
var coored = document.getElementById("ctgHotelTab"); document.getElementById("ctgHotelTab").style.top = coored.offsetTop + 35 + "px";
使用后:
var coored = document.getElementById("ctgHotelTab"), offetTop = coored.offsetTop + 35; document.getElementById("ctgHotelTab").style.top = offetTop + "px";
當(dāng)一個元素的布局不變,外觀發(fā)生改變時,就會引起重繪。
當(dāng)你設(shè)置style.top時,瀏覽器需要重新計算布局,我們每次請求offsetTop時,都會使瀏覽器重新計算布局,改變一個布局,就會導(dǎo)致回流。
四.壓縮javascript
通過自動化工具壓縮js。同html和css。
五.合并多個js文件
普遍通過cdn合并或公司的合并工具進行合并,有效減少http請求數(shù)量。
六.源生js和框架js相比,針對循環(huán),for比each要好。
性能測試工具
我經(jīng)常使用的是YSLOW。page speed也不錯。都會給你一些性能上的建議。
總結(jié)
性能很重要,毋容置疑。我的只是工作上的分享,僅供參考。詳見:http://browserdiet.com/zh/
相關(guān)文章
15 個為編程初學(xué)者準(zhǔn)備的網(wǎng)站(都是國外的一些網(wǎng)站)
今天的文章,我們將分享15個可以學(xué)習(xí)編程的網(wǎng)站,這些網(wǎng)站上提供了很多編程教程,圖書以及編程練習(xí),希望對你有用2024-11-02- 這篇文章主要介紹了web開發(fā)中的長度單位主要包括px,pt,em等,需要的朋友可以參考下2023-08-06
網(wǎng)頁前端開發(fā)的一些尺寸單位(px,rem單位)
px單位是絕對單位,一般用于pc端網(wǎng)頁開發(fā),因為是絕對單位所以在移動端上的使用體驗并不是很好,rem它是描述相對于當(dāng)前根元素字體尺寸,是相對單位,它可以根據(jù)根元素的變換而2023-08-06WEB前端優(yōu)化必備js/css壓縮工具YUI-compressor詳解與集成用法
壓縮工具層次不窮,各有優(yōu)點,選擇適合的壓縮工具為將來做項目開發(fā)使用是一件很重要的事情??!在這介紹YUI-compressor,需要的朋友可以參考下2023-06-21- 瀏覽器是多進程的,有瀏覽器主進程,網(wǎng)絡(luò)進程,渲染進程,插件進程等,在將html,css,javascript解析成一個頁面的時候,就需要多個進程的分工合作2023-05-01
- 本文為大家整理了常用的文件對應(yīng)的MIME類型,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-04-25
postman中form-data、x-www-form-urlencoded、raw、binary的區(qū)別介紹
這篇文章介紹了postman中form-data、x-www-form-urlencoded、raw、binary的區(qū)別,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-12-28網(wǎng)頁中使用Unicode字符的介紹(&#,\u等)
國際組織制定了可以容納世界上所有文字和符號的字符編碼方案,稱為Unicode,是通用字符集Universal Character Set的縮寫,用以滿足跨語言、跨平臺進行文本轉(zhuǎn)換、處理的要求2021-11-27前端實現(xiàn)字符串GBK與GB2312的編解碼(小結(jié))
這篇文章主要介紹了前端實現(xiàn)字符串GBK與GB2312的編解碼(小結(jié)),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2020-12-02- 這篇文章主要介紹了告別硬編碼讓你的前端表格自動計算,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-09-27