提高網(wǎng)站加載速度的一些小技巧

翻譯:瘋狂的技術(shù)宅
原文:https://likegeeks.com/improve-website-speed-tips-tricks/

為你網(wǎng)站的用戶留下良好的第一印象是非常必要的帆竹。隨著商業(yè)領(lǐng)域的競爭,擁有一個(gè)吸引人的網(wǎng)站可以幫助你脫穎而出。研究表明,如果加載時(shí)間超過3秒,會(huì)有 40% 的用戶放棄訪問你的網(wǎng)站(https://www.optimumsystemsonline.com/business-success/5-stats-that-will-make-you-monitor-web-performance/)。

如果開發(fā)人員急于瀏覽網(wǎng)站的編碼部分,問題的發(fā)生只是時(shí)間問題抚垄。各種各樣的編碼錯(cuò)誤可能會(huì)導(dǎo)致網(wǎng)站加載速度非常慢,從而用戶離開的網(wǎng)站。在頁面加載時(shí)間與跳出率的爭論中呆馁,你可以清楚地看到加載速度較慢的網(wǎng)站的參與率較低桐经。

同時(shí)提高網(wǎng)站加載速度也是提高網(wǎng)站排名的必要步驟之一。以下是避免頁面加載速度緩慢時(shí)需要考慮的一些事項(xiàng)浙滤。

為你的頁面元素選擇正確的加載順序

你的頁面中 <head> 部分中的所有元素都需要以正確的方式預(yù)加載阴挣。用戶在你的網(wǎng)站上看到任何內(nèi)容之前,所有這些元素都必須按順序加載纺腊。在 <head> 部分中使用 JavaScript 會(huì)導(dǎo)致頁面在嘗試呈現(xiàn)信息時(shí)變慢畔咧。

如果沒有對(duì)頁面加載元素的順序進(jìn)行優(yōu)化,那么用戶可能會(huì)在加載過程中看到白屏揖膜。通過優(yōu)化頁面加載元素誓沸,可以大大的加快頁面加載的速度。雖然優(yōu)化頁面加載元素非常耗時(shí)壹粟,但這種付出還是很值得的拜隧。

服務(wù)器性能可能會(huì)導(dǎo)致頁面加載問題

只要有人點(diǎn)擊你的網(wǎng)站,它就會(huì)激活從服務(wù)器開始的一系列事件趁仙。瀏覽器所做的最重要的一件事就是向你的服務(wù)器發(fā)送請(qǐng)求洪添。

如果服務(wù)器響應(yīng)緩慢,就會(huì)導(dǎo)致頁面加載問題雀费,所以你必須排除網(wǎng)絡(luò)故障干奢。如果這類問題經(jīng)常發(fā)生,你可能需要重新尋找其他 Web 服務(wù)商盏袄,要考慮它能為你的網(wǎng)站提供多少速度忿峻,即使你需要為可靠的網(wǎng)絡(luò)主機(jī)支付更多費(fèi)用。

優(yōu)化代碼很重要

壓縮 JavaScript 代碼也是解決頁面加載速度緩慢問題的好方法貌矿。使用代碼壓縮工具炭菌,你可以擺脫逗號(hào)、注釋甚至不需要的空格逛漫。使用 Google Closure Compiler 等程序是不錯(cuò)的選擇。

優(yōu)化之前:

function test(node) { 
    var parent = node.parentNode;
    
    if (0) {
        alert( "Hello Everybody" );
    } else {
        alert( "We love Websites" );
    }
    return;
    alert( 1 );
}

優(yōu)化后:

function test(){alert("We love Websites")}

正如你所看到的赘艳,優(yōu)化工具刪除不會(huì)用到的變量酌毡,還刪掉了死代碼。

優(yōu)化服務(wù)器端代碼同樣非常重要蕾管,就像我們?cè)?a target="_blank" rel="nofollow">處理大文件一文中看到的那樣枷踏,而不會(huì)損失性能。

了解延遲和異步標(biāo)記

JavaScript 中最常用的同步加載機(jī)制之一是異步加載掰曾⌒袢洌基本上此機(jī)制可確保你的網(wǎng)站以多流方式加載。

在使用瀏覽器找到一串如 <script src =“some.js"> </ script> 的代碼后,將立即停止創(chuàng)建 CSSOM 和 DOM 模型掏熬。所以將 JavaScript 代碼放在主 HTML 代碼之后可以加快頁面加載速度佑稠。

此代碼可讓你更好地理解異步標(biāo)記的功能:

<html>
    <head>
        <script src="big.js"></script>
    </head>
    <body>

在加載 big.js 之前,下面的代碼不會(huì)處理旗芬。

    </body>
</html>

向此代碼添加 async 標(biāo)記可確保立即創(chuàng)建 DOM 模型舌胶,并且不會(huì)干擾正確加載和執(zhí)行的 JavaScript。以下是正確使用 async 標(biāo)記的示例疮丛。

<html>
    <head>
        <script src="big.js" async></script>
    </head>
    <body>

這段代碼會(huì)被處理幔嫂,并且不依賴于big.js加載進(jìn)度。

    </body>
</html>

需要注意的是誊薄,如果你的 JavaScript 必須進(jìn)行 HTML 或 CSS 操作履恩,則使用 sync 標(biāo)記可能不是最好的方法。必須以強(qiáng)制的順序加載腳本時(shí)呢蔫,應(yīng)避免使用 sync 標(biāo)記切心。

注意復(fù)雜的文件格式和大圖像

雖然編碼錯(cuò)誤是頁面加載速度緩慢的主要原因之一,但大圖像和復(fù)雜文件格式等也會(huì)導(dǎo)致問題咐刨。一旦你使用的服務(wù)器被瀏覽器請(qǐng)求昙衅,它會(huì)開始將需要的每個(gè)字節(jié)都加載到用戶的移動(dòng)設(shè)備或計(jì)算機(jī)上。

如果你有許多大圖像定鸟,那么加載它們需要更長的時(shí)間而涉。這就是你需要使用文件壓縮軟件和插件的原因。雖然壓縮這些圖像的大小可能會(huì)有所幫助联予,但在某些情況下啼县,你可能需要?jiǎng)h除一些圖像。

未使用的 .JS 庫組件

許多開發(fā)人員按原樣使用 jQuery UI 之類的庫沸久,而根本不去優(yōu)化它季眷。這樣做可能會(huì)導(dǎo)致你根本不需要的代碼組件。如果可以選擇從 JavaScript 庫中排除哪些組件卷胯,那么你一定要抓住這個(gè)機(jī)會(huì)子刮。通過修改這些庫中的代碼,可以為用戶提供更好的體驗(yàn)并加快你的網(wǎng)站速度窑睁。

使用 GZIP 模塊是理想的選擇

雖然 gzip 是一個(gè)相對(duì)古老的發(fā)明挺峡,但在加快網(wǎng)站加載速度時(shí)絕對(duì)值得使用。這個(gè)程序能夠壓縮 Web 服務(wù)器上的文件大小担钮,甚至可以將一些靜態(tài)文件壓縮到原始大小的 99%橱赠。

由于 JavaScript 被視為文本文件,因此可以通過用 gzip 壓縮來減少頁面加載所需的時(shí)間箫津。

使用 Node.js 對(duì)文件壓縮也是一個(gè)好主意狭姨。以下是進(jìn)行設(shè)置的方法:

const zlib = require('zlib');

你可以通過以下幾種方式使用:

const gzip = zlib.createGzip();
 
const fs = require('fs');
 
const inp = fs.createReadStream('input.txt');
 
const out = fs.createWriteStream('input.txt.gz');
 
inp.pipe(gzip).pipe(out);

在gzip的幫助下宰啦,你可以找到并消除代碼中的重復(fù)元素。這些重復(fù)的元素也可以用歸檔字典中的小符號(hào)進(jìn)行替換饼拍。剩下的最終代碼將不會(huì)那么笨重赡模,并且完全針對(duì)性能進(jìn)行了優(yōu)化。

Be Aware of Code Density

意識(shí)到代碼密度

當(dāng)你的網(wǎng)站中包含大而密集的元素時(shí)只會(huì)減慢它的速度惕耕。像 Facebook 這樣的大型網(wǎng)站擁有超過 6000 萬行代碼纺裁。雖然你的站點(diǎn)沒有這么多代碼,但還是需要找到優(yōu)化代碼的方法司澎,以確保能夠快速加載欺缘。

不斷審查自己的代碼并對(duì)其進(jìn)行優(yōu)化是避免問題的唯一方法。從長遠(yuǎn)來看挤安,在代碼優(yōu)化方面投入的時(shí)間和精力肯定會(huì)得到回報(bào)谚殊。

處理太多文件請(qǐng)求

每次新用戶訪問時(shí),你網(wǎng)站上的每個(gè) CSS 文件蛤铜、社交分享按鈕和 JavaScript 元素都會(huì)生成一個(gè)新的文件請(qǐng)求嫩絮。即使是最強(qiáng)大和最可靠的服務(wù)器也只能在處理這么多請(qǐng)求時(shí)開始減速。

你需要考慮的是刪除頁面上的某些文件請(qǐng)求围肥,而不是試圖弄清楚如何提高服務(wù)器的速度剿干。

放任此此問題會(huì)導(dǎo)致在吸引用戶訪問你網(wǎng)站時(shí)遇到很多問題。你的主要目標(biāo)應(yīng)該是盡一切可能加速你的網(wǎng)站穆刻,并讓人們輕松瀏覽它置尔。

避免使用太多插件

即使你使用 WordPress 網(wǎng)站,在頁面加載速度方面也可能會(huì)遇到問題氢伟。大多數(shù)企業(yè)主使用 WordPress 模板榜轿,因?yàn)樗梢耘c他們的新網(wǎng)站一起運(yùn)行。但是朵锣,你通常還需要使用許多不同的插件來使網(wǎng)站具有更多功能谬盐。

這些插件可能是有用的,但是有太多插件會(huì)產(chǎn)生問題诚些。如果有插件太多又試圖同時(shí)運(yùn)行飞傀,那么它將大大減慢你的網(wǎng)站速度。

客觀地看待正在使用的插件可以幫助你找出哪些插件是可以不用的诬烹。減少插件的數(shù)量將使你的 WordPress 網(wǎng)站更快助析。

適當(dāng)?shù)挠?CSS3 效果而不是 JavaScript

一些程序員沒有意識(shí)到 CSS 的新版本可以比以舊版本做得更多。在過去 CSS 1.0 和 2.0 需要大量的 JavaScript 輔助才能實(shí)現(xiàn)高級(jí)樣式效果椅您。但是用 CSS3 不僅可以為你提供更大的靈活性,還可以降低你的 CPU 使用率寡键。

下面是一些代碼掀泳,你可以用 CSS3 實(shí)現(xiàn)滑塊效果而無需使用 JavaScript:

HTML:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>CSS Slider</title>
    </head>
    <body>
        <base >
        <div id="slider">
            <figure>
                <img src="austin-fireworks.jpg" alt>
                <img src="taj-mahal_copy.jpg" alt>
                <img src="ibiza.jpg" alt>
                <img src="ankor-wat.jpg" alt>
                <img src="austin-fireworks.jpg" alt>
            </figure>
        </div>
    </body>
</html>

CSS

@keyframes slidy { 
    0% { left: 0%; }
    20% { left: 0%; }
    25% { left: -100%; }
    45% { left: -100%; }
    50% { left: -200%; }
    70% { left: -200%; }
    75% { left: -300%; }
    95% { left: -300%; }
    100% { left: -400%; }
}

body { margin: 0; } 
div#slider { overflow: hidden; }
div#slider figure img { width: 20%; float: left; }
div#slider figure {
    position: relative;
    width: 500%;
    margin: 0;
    left: 0
    text-align: left;
    font-size: 0;
    animation: 30s slidy infinite;
}

學(xué)習(xí)如何使用更新的工具將幫助你實(shí)現(xiàn)所追求的頁面加載速度雪隧。

定期更新內(nèi)容管理系統(tǒng)

大多數(shù)企業(yè)會(huì)使用提供內(nèi)容管理功能的網(wǎng)站平臺(tái),比如 Wix 和 WordPress 這樣的平臺(tái)员舵,無需花費(fèi)大量時(shí)間和金錢脑沿。如果你用的是其中之一的話,則必須定期去更新它马僻。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末庄拇,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子韭邓,更是在濱河造成了極大的恐慌措近,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件女淑,死亡現(xiàn)場(chǎng)離奇詭異瞭郑,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)鸭你,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門屈张,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人袱巨,你說我怎么就攤上這事阁谆。” “怎么了愉老?”我有些...
    開封第一講書人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵场绿,是天一觀的道長。 經(jīng)常有香客問我俺夕,道長裳凸,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任劝贸,我火速辦了婚禮姨谷,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘映九。我一直安慰自己梦湘,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開白布件甥。 她就那樣靜靜地躺著捌议,像睡著了一般。 火紅的嫁衣襯著肌膚如雪引有。 梳的紋絲不亂的頭發(fā)上瓣颅,一...
    開封第一講書人閱讀 51,146評(píng)論 1 297
  • 那天,我揣著相機(jī)與錄音譬正,去河邊找鬼宫补。 笑死檬姥,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的粉怕。 我是一名探鬼主播健民,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼贫贝!你這毒婦竟也來了秉犹?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤稚晚,失蹤者是張志新(化名)和其女友劉穎崇堵,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蜈彼,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡筑辨,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了幸逆。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片棍辕。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖还绘,靈堂內(nèi)的尸體忽然破棺而出楚昭,到底是詐尸還是另有隱情,我是刑警寧澤拍顷,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布抚太,位于F島的核電站,受9級(jí)特大地震影響昔案,放射性物質(zhì)發(fā)生泄漏尿贫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一踏揣、第九天 我趴在偏房一處隱蔽的房頂上張望庆亡。 院中可真熱鬧,春花似錦捞稿、人聲如沸又谋。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽彰亥。三九已至,卻和暖如春衰齐,著一層夾襖步出監(jiān)牢的瞬間任斋,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來泰國打工耻涛, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留仁卷,地道東北人穴翩。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像锦积,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子歉嗓,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5丰介? 答:HTML5是最新的HTML標(biāo)準(zhǔn)。 注意:講述HT...
    kismetajun閱讀 27,474評(píng)論 1 45
  • 轉(zhuǎn)載自:http://web.jobbole.com/82197/ 前端的性能對(duì)于一個(gè)Web應(yīng)用來說非常重要鉴分,如果...
    天字一等閱讀 599評(píng)論 0 2
  • SDWebImage中為imageview提供了UIImage+webcache.h類哮幢,這個(gè)分類中有一個(gè)sd_se...
    T_label閱讀 2,239評(píng)論 0 0
  • 我身邊有這樣一群人, 他們的工作很簡單志珍, 每天面對(duì)不同的孩子橙垢; 他們的工作很辛苦, 每天從早忙到晚伦糯; 但是他們很開...
    聽瑛語閱讀 643評(píng)論 2 1