怎樣才能才企業(yè)網(wǎng)站的“網(wǎng)頁減肥”,使之能有效的加快網(wǎng)頁加載速度。
1、用gzip格式壓縮
gzip是gnuzip的縮寫,它是一個(gè)gnu自由軟件的文件壓縮程序。它是jean-loupgailly和markadler一起開發(fā)的,第一次公開發(fā)布版本是1992年10月31日發(fā)布的版本0.1,1993年2月發(fā)布了版本1.0。
我們?cè)趌inux中經(jīng)常會(huì)用到后綴為.gz的文件,它們就是gzip格式的,現(xiàn)今已經(jīng)成為internet上使用非常普遍的一種數(shù)據(jù)壓縮格式,或者說一種文件格式。
http協(xié)議上的gzip編碼是一種用來改進(jìn)web應(yīng)用程序性能的技術(shù),大流量的web站點(diǎn)常常使用gzip壓縮技術(shù)來讓用戶感受更快的速度。
這一般是指www服務(wù)器中安裝的一個(gè)功能,當(dāng)有人來訪問這個(gè)服務(wù)器中的網(wǎng)站時(shí),服務(wù)器中的這個(gè)功能就將網(wǎng)頁內(nèi)容壓縮后傳輸?shù)絹碓L的電腦瀏覽器中顯示出來。
一般對(duì)純文本內(nèi)容可壓縮到原大小的40%,這樣傳輸就快了,效果就是你點(diǎn)擊網(wǎng)址后會(huì)很快的顯示出來,當(dāng)然這也會(huì)增加服務(wù)器的負(fù)載,一般服務(wù)器中都安裝有這個(gè)功能模塊的。
根據(jù)w3c組織調(diào)查,大部分的網(wǎng)站都沒有啟用壓縮功能。
2、支持瀏覽器緩存
如果瀏覽器支持緩存,我們就不用重復(fù)下載網(wǎng)頁資源,最簡(jiǎn)單的設(shè)置緩存方法是在響應(yīng)頭中添加相應(yīng)的內(nèi)容,包括:expires header,last-modified等。
你可以可以通過配置服務(wù)器來自動(dòng)添加這些屬性,比如你在apache服務(wù)器中配置緩存所有的照片一個(gè)月:
3、使用內(nèi)容分發(fā)網(wǎng)絡(luò) (cdn)
cdn的全稱是content delivery network,即內(nèi)容分發(fā)網(wǎng)絡(luò)。其目的是通過在現(xiàn)有的internet中增加一層新的網(wǎng)絡(luò)架構(gòu),將網(wǎng)站的內(nèi)容發(fā)布到最接近用戶的網(wǎng)絡(luò)“邊緣”,使用戶可以就近取得所需的內(nèi)容,提高用戶訪問網(wǎng)站的響應(yīng)速度。
cdn有別于鏡像,因?yàn)樗如R像更智能,或者可以做這樣一個(gè)比喻:cdn=更智能的鏡像+緩存+流量導(dǎo)流。
因而,cdn可以明顯提高internet網(wǎng)絡(luò)中信息流動(dòng)的效率,從技術(shù)上全面解決由于網(wǎng)絡(luò)帶寬小、用戶訪問量大、網(wǎng)點(diǎn)分布不均等問題,提高用戶訪問網(wǎng)站的響應(yīng)速度。
為更好地理解cdn,讓我們看一下cdn的工作流程,當(dāng)用戶訪問已經(jīng)加入cdn服務(wù)的網(wǎng)站時(shí),首先通過dns重定向技術(shù)確定最接近用戶的好cdn節(jié)點(diǎn),同時(shí)將用戶的請(qǐng)求指向該節(jié)點(diǎn)。
當(dāng)用戶的請(qǐng)求到達(dá)指定節(jié)點(diǎn)時(shí),cdn的服務(wù)器(節(jié)點(diǎn)上的高速緩存)負(fù)責(zé)將用戶請(qǐng)求的內(nèi)容提供給用戶。
具體流程為: 用戶在自己的瀏覽器中輸入要訪問的網(wǎng)站的域名,瀏覽器向本地dns請(qǐng)求對(duì)該域名的解析,本地dns將請(qǐng)求發(fā)到網(wǎng)站的主dns,主dns根據(jù)一系列的策略確定當(dāng)時(shí)最適當(dāng)?shù)腸dn節(jié)點(diǎn),并將解析的結(jié)果(ip地址)發(fā)給用戶,用戶向給定的cdn節(jié)點(diǎn)請(qǐng)求相——應(yīng)網(wǎng)站的內(nèi)容。
以上三個(gè)方法可以有效地加快頁面的訪問速度,現(xiàn)在我們將對(duì)你的代碼進(jìn)行診斷,幫助我們給頁面減肥。
4、刪除不需要的資源
當(dāng)你不再需要一個(gè)組件的時(shí)候,你應(yīng)該刪掉它的css和javascript代碼,如果這些代碼都單獨(dú)放在一個(gè)文件中,那刪掉它們也不是難事,但如果已經(jīng)沒有用的代碼和其它代碼在一個(gè)文件中,那你肯定要費(fèi)不少精力去刪掉它們。
這個(gè)時(shí)候你就需要使用第三方的工具來幫你一鍵解決,比如jslint,dust-me selectors,css usage或是像grunt-uncss一樣的構(gòu)建工具。
5、style和font重復(fù)定義的沉余代碼
要充分利用好css代碼定義自己的顏色大小等,有些網(wǎng)站既用了css代碼定義了之后又去使用style或者是font這樣的代碼進(jìn)行定義,這樣就無形中增加了無用代碼,容易造成代碼冗余,因此我們要對(duì)這樣的代碼進(jìn)行壓縮,實(shí)現(xiàn)代碼精簡(jiǎn)。
6、通用和最小化css
理想情況下,需要一個(gè)單獨(dú)的css文件,讓每個(gè)頁面都調(diào)用這一個(gè)布局,當(dāng)然,如果你想要支持老版本的ie,你就得多弄一個(gè)css文件。
另外,我還要提醒大家一點(diǎn):當(dāng)你把它們構(gòu)建到服務(wù)器上之前,你應(yīng)該把代碼間所有不必要的格式都刪掉。
有很多預(yù)處理工具都可以幫你解決這件麻煩事,比如sass,less和stylus。
有一些方法可以幫助你直接合并多個(gè)css文件,在windows上:
copy file1.css+file2.css file.css
在mac或linux上:
cat file1.css file2.css > file.css
你可以把得到的css文件再經(jīng)過在線的css壓縮工具刪除格式化。
最后,在head標(biāo)簽中加載所有的css,這樣瀏覽器就知道你的頁面樣式不用多次重繪了。
7、通用和最小化的javascript
利用外部文件,我們可以用javascript代碼和css代碼放在外部文件里面,在我們的html代碼里面加上調(diào)用代碼進(jìn)行調(diào)用即可,如果打開一個(gè)網(wǎng)站去檢查它的源文件,前面如果有大量的javascript代碼和css代碼就容易使得網(wǎng)站有用的內(nèi)容文字部分推到后面去了,是不利于搜索引擎抓取的。
據(jù)我博客收集的數(shù)據(jù)顯示:平均每個(gè)頁面加載了18個(gè)javascript文件,雖然把像jquery這樣的庫文件單獨(dú)分開非常實(shí)用,但是你自己的javascript代碼應(yīng)該保持通用和最小化。
同樣很多第三方的工具可以幫你解決這樣事情,比如yui compressor,closure compiler和我最喜歡用的the javascript compressorrater,簡(jiǎn)化的javascript代碼會(huì)加快網(wǎng)頁的訪問速度,減少http請(qǐng)求次數(shù)。
最后,好在html的body標(biāo)簽后放置javascript引用代碼,這樣能保證javascript代碼不影響到其它內(nèi)容的加載。
8、減少頁面嵌套的表格
對(duì)于表格要盡量少使用,尤其是嵌套的表格部分,雖然css排版使得我們編寫代碼更加的精簡(jiǎn)容易,但往往也是少不了表格的使用的,我們可以不去避免,但一定要減少使用多層嵌套的表格,不要產(chǎn)生沒有用的代碼。
9、網(wǎng)站圖片的優(yōu)化
對(duì)于一些圖片站來說,加載錯(cuò)誤的圖片格式會(huì)對(duì)你的網(wǎng)頁造成很大影響,所以,我建議圖片站的站長(zhǎng)一定要多對(duì)圖片做些優(yōu)化。
(1)、圖片優(yōu)化原則
一般來說選取圖片我們應(yīng)用遵循如下原則:
①、照片使用jpg格式。
②、其它所有的圖片都使用png格式。
(2)、調(diào)整大圖的大小
目前智能機(jī)所拍出的照片越來越大,你不可能把原照片直接展示在頁面中,普通的編輯器都會(huì)直接上傳原圖,這樣會(huì)讓頁面的加載速度慢到另一個(gè)級(jí)別,在正常的照片處理中,一般都沒有必要給用戶高質(zhì)量的圖片展示,所以,你需要一個(gè)自動(dòng)調(diào)整圖片大小的工具。
需要注意的是,圖片的尺寸是不能超過容量的大小的,這樣一來頁面加載了全圖,卻無法展示出來,現(xiàn)在照片的尺寸基本上都超過電腦顯示屏的尺寸了。
圖片的大小在網(wǎng)頁總大小中占很大的比重,圖片減小50%會(huì)導(dǎo)致整體頁面大小減少75%,所以你應(yīng)該認(rèn)真解決一下圖片的加載。
(3)、進(jìn)一步壓縮圖片
僅僅調(diào)優(yōu)圖片的大小是不夠的,你應(yīng)該通過第三方工具對(duì)圖片進(jìn)行分析,進(jìn)一步壓縮圖片。
比較好用的工具有optipng,pngout,jpegtran和jpegoptim,這些工具大都能安裝成獨(dú)立的工具或是整合到開發(fā)過程中,另外像smush這樣的工具,還可以直接在云端處理。
10、刪除不必要的字體和注釋
web fonts已經(jīng)徹底改變了字體的設(shè)計(jì),它減少了很多不必要的文本,然而,目前的字體仍然會(huì)給你的網(wǎng)頁帶來多余的字節(jié)。
如果你使用超過兩種字體,這就已經(jīng)開始對(duì)性能造成影響了。
網(wǎng)頁代碼盡量少用注釋,我們知道一段程序里面加上注釋能夠便于我們快速找到和理解具體代碼對(duì)應(yīng)的功能,對(duì)于編程人員修改網(wǎng)頁是有幫助的,但是這樣的代碼對(duì)于搜索引擎來說是沒有任何的意義的,只能說是噪聲,因此我們要減少網(wǎng)頁代碼里面出現(xiàn)的注釋部分。
我相信大部分網(wǎng)站都可以通過以上的優(yōu)化減小大概30%-50%的重量,但是身為一個(gè)好主義的開發(fā)者這是遠(yuǎn)遠(yuǎn)不夠的,我們?cè)诮酉聛淼南盗形恼轮袝?huì)繼續(xù)對(duì)網(wǎng)站瘦身進(jìn)行深入研究。
企業(yè)如何制作一個(gè)優(yōu)秀的網(wǎng)站信息流廣告資源線索接通率低的真正原因北京到郴州物流專線佛山到那曲物流專線南昌到延安物流專線企業(yè)網(wǎng)站建設(shè)上線后收錄的方法和技巧杭州到贛州物流專線拓展思維:引流結(jié)構(gòu)詳解