首頁 web前端 css教學 關於Web效能優化方案的詳細介紹

關於Web效能優化方案的詳細介紹

Jul 27, 2017 am 09:39 AM
web 方案 詳細

#第一章 開啟網站慢現況分析

在公司訪問部署在IDC機房的VIP網站時會感覺很慢。是什麼原因造成的?為了縮短頁面的回應時間,改善我們的使用者體驗,我們需要知道使用者的時間花在等待某些東西上。

       可以追蹤我們的登入頁面,如下圖

    從上圖我們可以分析知道,HTML文件只佔了總回應時間的20%,其它80%回應時間用來下載JSCSS、圖片等組件。所以WEB前端有很大的最佳化空間,我們將從WEB的前端優化、後端優化兩方面綜合考慮給出WEB的效能最佳化方案。

一、盡量減少 HTTP 請求

1 合併腳本跟樣式文件,如可以把多個CSS 文件合成一個,把多個 JS 檔合成一個。

2 CSS Sprites 利用 CSS background 相關元素進行背景圖絕對定位,把多個圖片合成一個圖片。

二、使用瀏覽器快取

#

       當使用者瀏覽網站的不同頁面時,許多內容是重複的,例如相同的JSCSS、圖片等。如果我們能夠建議甚至強制瀏覽器在本地快取這些文件,將大大降低頁面產生的流量,從而降低頁面載入時間。

   根據伺服器端的回應header,一個檔案對瀏覽器而言,有幾個不同的快取狀態。

   1、伺服器端告訴瀏覽器不要快取此文件,每次都會到伺服器更新文件。

   2、伺服器端沒有給瀏覽器任何指示。

   3、在上次傳輸中,伺服器給瀏覽器發送了Last-ModifiedEtag數據,再次瀏覽時瀏覽器將提交這些資料到伺服器,驗證本機版本是否最新的,如果為最新的則伺服器傳回304程式碼,告訴瀏覽器直接使用本機版本,否則下載新版本。一般來說,有且只有靜態文件,伺服器端才會給出這些資料。

   4、伺服器強制要求瀏覽器快取文件,並設定了過期時間。在快取未到期之前,瀏覽器將直接使用本機快取文件,不會與伺服器端產生任何通訊。

       我們要做的是盡量強制瀏覽器到第四種狀態,特別是對於JSCSS、圖片等變動較少的文件。

三、使用壓縮元件

IEFirefox瀏覽器都支援客戶端GZIP,傳輸之前,先使用GZIP壓縮再傳送給客戶端,客戶端接收之後由瀏覽器解壓縮,這樣雖然稍微佔用了一些伺服器和客戶端的CPU,但是換來的是更高的頻寬利用率。對於純文字來講,壓縮率是相當可觀的。如果每個用戶節省50%的頻寬,那麼租用來的那點頻寬就可以服務多一倍的客戶,並且縮短了資料的傳輸時間。

四、圖片、JS的預載入

#預先載入映像最簡單的方法是在 JavaScript 中實例化一個新 Image() 對象,然後將需要載入的圖像的 URL 作為參數傳入。

function preLoadImg(url) {
var img = new Image();
img.src = url;
}
登入後複製


可以在登入頁面預先載入JS和圖片

五、將腳本放在底部

腳本放在頂部所帶來的問題,

1、 ##使用腳本時,對於位於腳本以下的內容,逐步呈現將被阻塞

2、

 在下載腳本時會阻塞並行下載

放在底部可能會出現JS錯誤問題,當腳本沒載入進來,使用者就觸發腳本事件。

要綜合考慮情況。

六、

將樣式檔放在頁面頂部

如果樣式表任在加載,構建呈現樹就是一種浪費,樣式文件放在頁面底部可能會出現兩種情況:

1、 白屏

2、 無樣式內容的閃爍

七、使用外部的JSCSS

將內聯的JSCSS做成外部的JSCSS。減少重複下載內聯的JSCSS

八、切分元件到多個網域

第四章 資料庫的最佳化

#附錄A 頁面要求分析

  從輸入URL到頁面呈現需要下面5個步驟

#1 輸入URL位址或點選URL的一個連結

# 2 瀏覽器根據URL位址,結合DNS,解析出URL對應的IP位址

 3 發送HTTP請求

 4 開始連接請求的伺服器並且請求相關的內容

 5 瀏覽器解析從伺服器端返回的內容,並且把頁面顯現出來

上面基本上就是一個頁面從請求到實現的基本過程,下面我們將剖析這個過程。

當輸入URL之後,瀏覽器就要知道這個##URL #對應的IP是什麼,只有知道了IP位址,瀏覽器才能準備的把請求傳送到指定的伺服器的具體IP和連接埠號碼上面。瀏覽器的DNS解析器負責把URL解析為正確的IP地址。這個解析的工作是要花時間的,而且這個解析的時間段內,瀏覽器不是能從伺服器下載到任何的東西的。瀏覽器和操縱系統提供了DNS解析快取支援。 當獲得了IP位址之後,那麼瀏覽器就會向伺服器發送HTTP的請求,流程如下:

1

.瀏覽器透過發送一個TCP的套件,要求伺服器開啟連線

2

.伺服器也透過發送一個包來應答客戶端的瀏覽器,告訴瀏覽器連線開了。

3

.瀏覽器發送一個HTTPGET請求,這個請求包含了很多的東西了,例如我們常見的cookie和其他的head頭資訊。

這樣,一個請求就算是發過去了。

請求發送去之後,之後就是伺服器的事情了,伺服器端的程式把最後的結果送到客戶端。

 

其實首先到達瀏覽器的就是html的那些文檔,所謂的html的文檔,就是純粹的html程式碼,不包含什麼圖片,腳本,CSS等的。也就是頁面的html結構。因為此時回傳的只是頁面的html結構。這個html文件的傳送到瀏覽器的時間是很短的,一般是佔整個回應時間的10%左右。

 

這樣之後,那麼頁面的基本的骨架就在瀏覽器中了,下一步就是瀏覽器解析頁面的過程,也就是一步步從上到下的解析html的骨架了。

如果此時在html文件中,遇到了img標籤,那麼瀏覽器就會發送HTTP請求到這個 img回應的URL位址去取得圖片,然後呈現出來。如果在html文件中有很多的圖片,flash,那麼瀏覽器就會一個個的請求,然後呈現,如果每個圖片都要請求,那麼就要進行之前說的那些步驟:解析url,打開tcp連接等等。打開連接也是要消耗資源的,就像我們在進行資料庫存取一樣,我們也是盡可能的少開資料庫連接,多用連接池中的連接。道理一樣,tcp連接也是可以重複使用的。 http1.1提出了持久連接(persistent connection)的概念,也就是說同一條 HTTP 連接,可以同時處理多個請求,減少tcp連接。

當頁面的html骨架載入了之後,瀏覽器就開始解析頁面中標籤,從上到下開始解析。

首先是head標籤的解析,如果發現在head中有要引用的JS腳本,那麼瀏覽器此時就開始請求腳本,此時整個頁面的解析過程就停了下來,一直到JS請求完畢。之後頁面接著向下解析,如解析body標籤,如果在body中有img標籤,那麼瀏覽器就會要求imgsrc對應的資源,如果有多個img標籤,那麼瀏覽器就一個個的解析,解析不會像JS那樣等待的,會並發的下載。

以上是關於Web效能優化方案的詳細介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Nginx的Web伺服器caddy怎麼使用 Nginx的Web伺服器caddy怎麼使用 May 30, 2023 pm 12:19 PM

Caddy簡介Caddy是一款功能強大,擴展性高的Web伺服器,目前在Github上已有38K+Star。 Caddy採用Go語言編寫,可用於靜態資源託管和反向代理。 Caddy具有以下主要特性:比較Nginx複雜的配置,其獨創的Caddyfile配置非常簡單;可以透過其提供的AdminAPI實現動態修改配置;預設支援自動化HTTPS配置,能自動申請HTTPS憑證並進行配置;能夠擴展到數以萬計的站點;可以在任意地方執行,沒有額外的依賴;採用Go語言編寫,內存安全更有保證。安裝首先我們直接在CentO

如何使用Golang實作網頁應用程式的表單驗證 如何使用Golang實作網頁應用程式的表單驗證 Jun 24, 2023 am 09:08 AM

表單驗證是Web應用程式開發中非常重要的環節,它能夠在提交表單資料之前對資料進行有效性檢查,避免應用程式出現安全漏洞和資料錯誤。使用Golang可以輕鬆實現網頁應用程式的表單驗證,本文將介紹如何使用Golang來實作網頁應用程式的表單驗證。一、表單驗證的基本要素在介紹如何實作表單驗證之前,我們需要知道表單驗證的基本要素是什麼。表單元素:表單元素是指

Java API 開發中使用 Jetty7 進行 Web 伺服器處理 Java API 開發中使用 Jetty7 進行 Web 伺服器處理 Jun 18, 2023 am 10:42 AM

JavaAPI開發中使用Jetty7進行Web伺服器處理隨著互聯網的發展,Web伺服器已經成為了應用程式開發的核心部分,同時也是許多企業所關注的焦點。為了滿足日益增長的業務需求,許多開發人員選擇使用Jetty進行Web伺服器開發,其靈活性和可擴展性受到了廣泛的認可。本文將介紹如何在JavaAPI開發中使用Jetty7進行We

怎麼設定nginx保證frps伺服器與web共用80埠 怎麼設定nginx保證frps伺服器與web共用80埠 Jun 03, 2023 am 08:19 AM

首先你會有個疑惑,frp是什麼呢?簡單的說frp就是內網穿透工具,配置客戶端以後,可以透過伺服器來存取內部網路。現在我的伺服器,已經用nginx做站了,80端口只有一個,那如果frp的服務端也想使用80端口,那該怎麼辦呢?經過查詢,這個是可以實現的,就是利用nginx的反向代理來實現。補充一下:frps就是伺服器端(server),frpc就是客戶端(client)。第一步:修改伺服器中nginx.conf設定檔在nginx.conf中http{}裡加入以下參數,server{listen80

Web 端即時防擋臉彈幕(基於機器學習) Web 端即時防擋臉彈幕(基於機器學習) Jun 10, 2023 pm 01:03 PM

防擋臉彈幕,即大量彈幕飄過,但不會遮擋視訊畫面中的人物,看起來像是從人物背後飄過去的。機器學習已經火了好幾年了,但很多人都不知道瀏覽器中也能運行這些能力;本文介紹在視頻彈幕方面的實踐優化過程,文末列舉了一些本方案可適用的場景,期望能開啟一些腦洞。 mediapipeDemo(https://google.github.io/mediapipe/)展示主流防擋臉彈幕實現原理點播up上傳視訊伺服器後台計算提取視訊畫面中的人像區域,轉換成svg儲存用戶端播放視訊的同時,從伺服器下載svg與彈幕合成,人像

web標準是什麼東西 web標準是什麼東西 Oct 18, 2023 pm 05:24 PM

Web標準是一組由W3C和其他相關組織制定的規範和指南,它包括HTML、CSS、JavaScript、DOM、Web可訪問性和性能優化等方面的標準化,透過遵循這些標準,可以提高頁面的兼容性、可訪問性、可維護性和效能。 Web標準的目標是使Web內容能夠在不同的平台、瀏覽器和裝置上一致地展示和交互,提供更好的使用者體驗和開發效率。

如何從駕駛艙Web使用者介面啟用管理訪問 如何從駕駛艙Web使用者介面啟用管理訪問 Mar 20, 2024 pm 06:56 PM

Cockpit是一個面向Linux伺服器的基於Web的圖形介面。它主要是為了使新用戶/專家用戶更容易管理Linux伺服器。在本文中,我們將討論Cockpit存取模式以及如何從CockpitWebUI切換Cockpit的管理存取。內容主題:駕駛艙進入模式查找當前駕駛艙訪問模式從CockpitWebUI啟用Cockpit的管理訪問從CockpitWebUI禁用Cockpit的管理訪問結論駕駛艙進入模式駕駛艙有兩種訪問模式:受限訪問:這是駕駛艙的默認訪問模式。在這種存取模式下,您無法從駕駛艙Web用戶

nginx隱藏版本號碼與WEB伺服器資訊問題怎麼解決 nginx隱藏版本號碼與WEB伺服器資訊問題怎麼解決 May 21, 2023 am 09:13 AM

nginx不只可以隱藏版本信息,還支援自訂web伺服器資訊先看看最終的隱藏結果吧具體怎麼實現呢,其實也很簡單,請往下看1官網下載最新穩定版wgethttp://nginx.org/ download/nginx-1.14.1.tar.gz2解壓tar-xfnginx-1.14.1.tar.gzcdnginx-1.14.13修改c文件(1)vimsrc/http/ngx_http_header_filter_module.c          #修改49行staticu_charngx_http_

See all articles