著前端技術的不斷發(fā)展,html5不僅應用于傳統(tǒng)的web頁面開發(fā),而且還能用于移動APP、桌面應用開發(fā),甚至各大互聯(lián)網(wǎng)平臺推出的小程序也是借鑒了html5技術。
h5應用相比原生應用來說,用戶體驗上會有一些差異,因此,性能調(diào)優(yōu)非常重要。
對html5的調(diào)優(yōu)可以從以下幾個方面入手:
1.網(wǎng)絡調(diào)優(yōu)
網(wǎng)絡調(diào)優(yōu)又有以下幾種處理方式:
首先,減小請求體積,對代碼進行壓縮處理,啟用服務端的GZIP配置等,能有效減小數(shù)據(jù)傳輸?shù)捏w積。
其次,減少請求次數(shù),適當?shù)氖褂靡恍┚彺婕夹g,將數(shù)據(jù)緩存到本地,這樣就不需要頻繁向服務端請求數(shù)據(jù)。增加一些防抖、節(jié)流的措施,防止用戶不必要的重復操作,重復請求。
第三,優(yōu)化網(wǎng)絡鏈路,使用CDN技術,讓客戶端從最近的網(wǎng)絡節(jié)點請求資源,減少網(wǎng)絡開銷。
最后,還有分頁加載、延時加載、差量加載等可用于不同場景的優(yōu)化。
2.架構(gòu)優(yōu)化
搭建h5應用,最好采用單頁面應用架構(gòu),這樣可以減小瀏覽器切換帶了的額外性能開銷,目前有很多優(yōu)秀的框架幫我們搭建H5應用,例如:Vue等。另外,Vue等框架的虛擬dom技術,也會大大減少實體dom的操作次數(shù),減小性能開銷。
當然,在具體的開發(fā)過程中,數(shù)據(jù)結(jié)構(gòu)、算法的優(yōu)化也很重要,這個就跟具體業(yè)務場景有關,無法一一列舉。
3.渲染優(yōu)化
需要對瀏覽器渲染的原理有一定的研究,頁面渲染大致四個過程: dom樹解析、渲染樹解析、寫入顯存、圖形繪制。
dom樹的解析,是對整個文檔的html、css結(jié)構(gòu)進行解析,因此html、css的結(jié)構(gòu)越簡潔,嵌套的層級越少,解析效率就會越高。
渲染樹的解析,是根據(jù)html與css解析結(jié)果,計算出每個元素的實際顯示效果。而寫入顯存,則是將計算好的渲染樹,寫入到顯示器的內(nèi)存。這2個過程,需要減少重繪的發(fā)生,否則很影響性能。簡單的說一下重繪,改變一個元素的寬高,會影響整個布局重新排版,這就是重繪,如果改變背景色則不會影響其它布局。因此盡量避免重繪操作,例如,給圖片設置固定大小,就不會因為網(wǎng)絡加載過程中,圖片尺寸變化,導致整個頁面布局排版變化。
最后是圖形繪制,顯示器根據(jù)刷新頻率,將內(nèi)存中的圖像,繪制到屏幕的像素點上。這里我們需要盡量避免一些性能消耗較大的顯示效果,如:陰影、圓角,另外如果需要動畫效果的話,則盡量使用css3實現(xiàn),css3動畫會啟用硬件加速。
、XHTML與HTML的區(qū)別
文檔結(jié)構(gòu)
XHTML DOCTYPE 是強制性的
<html>中的 XML namespace 屬性是強制性的
<html>、<head>、<title>以及 <body>也是強制性的
元素語法
XHTML 元素必須正確嵌套
XHTML 元素必須始終關閉
XHTML 元素必須小寫
XHTML 文檔必須有一個根元素
屬性語法
XHTML 屬性必須使用小寫
XHTML 屬性值必須用引號包圍
XHTML 屬性最小化也是禁止的
二、HTML5中一些新特性
用于繪畫的 canvas 元素
用于媒介回放的 video 和 audio 元素
對本地離線存儲的更好的支持
新的特殊內(nèi)容元素,比如 article、footer、header、nav、section
新的表單控件,比如 calendar、date、time、email、url、search
注意:最新版本的 Safari、Chrome、Firefox 以及 Opera 支持某些 HTML5 特性。Internet Explorer 9 將支持某些 HTML5 特性。
IE9 以下版本瀏覽器兼容HTML5的方法,使用本站的靜態(tài)資源的html5shiv包:
<!--[if lt IE 9]>
<script src="http://cdn.static.runoob.com/libs/html5shiv/3.7/html5shiv.min.js"></script>
<![endif]-->
? ?/*html5*/
article,aside,dialog,footer,header,section,nav,figure,menu{display:block}
我自己是一名從事了多年開發(fā)的web前端老程序員,目前辭職在做自己的web前端私人定制課程,今年年初我花了一個月整理了一份最適合2019年學習的web前端學習干貨,各種框架都有整理,送給每一位前端小伙伴,想要獲取的可以關注我的頭條號并在后臺私信我:前端,即可免費獲取。
三、HTML5web存儲
使用HTML5可以在本地存儲用戶的瀏覽數(shù)據(jù)。
早些時候,本地存儲使用的是 cookie。但是Web 存儲需要更加的安全與快速. 這些數(shù)據(jù)不會被保存在服務器上,但是這些數(shù)據(jù)只用于用戶請求網(wǎng)站數(shù)據(jù)上.它也可以存儲大量的數(shù)據(jù),而不影響網(wǎng)站的性能.
數(shù)據(jù)以 鍵/值 對存在, web網(wǎng)頁的數(shù)據(jù)只允許該網(wǎng)頁訪問使用。
瀏覽器支持:
Internet Explorer 8+, Firefox, Opera, Chrome, 和 Safari支持Web 存儲。
注意: Internet Explorer 7 及更早IE版本不支持web 存儲.
localStorage 和 sessionStorage
客戶端存儲數(shù)據(jù)的兩個對象為:
localStorage - 用于長久保存整個網(wǎng)站的數(shù)據(jù),保存的數(shù)據(jù)沒有過期時間,直到手動去除。
sessionStorage - 用于臨時保存同一窗口(或標簽頁)的數(shù)據(jù),在關閉窗口或標簽頁之后將會刪除這些數(shù)據(jù)。
在使用 web 存儲前,應檢查瀏覽器是否支持 localStorage 和sessionStorage:
if(typeof(Storage)!=="undefined")
{
// 是的! 支持 localStorage sessionStorage 對象!
// 一些代碼.....
} else {
// 抱歉! 不支持 web 存儲。
}
不管是 localStorage,還是 sessionStorage,可使用的API都相同,常用的有如下幾個(以localStorage為例):
保存數(shù)據(jù):localStorage.setItem(key,value);
讀取數(shù)據(jù):localStorage.getItem(key);
刪除單個數(shù)據(jù):localStorage.removeItem(key);
刪除所有數(shù)據(jù):localStorage.clear();
得到某個索引的key:localStorage.key(index);
四、HTML5 應用程序緩存
HTML5 -應用程序緩存=>使用文章鏈接跳轉(zhuǎn)點這里
五、HTML5 服務器發(fā)送事件(Server-Sent Events)
Server-Sent 事件指的是網(wǎng)頁自動獲取來自服務器的更新。
以前也可能做到這一點,前提是網(wǎng)頁不得不詢問是否有可用的更新。通過服務器發(fā)送事件,更新能夠自動到達。
例子:Facebook/Twitter 更新、股價更新、新的博文、賽事結(jié)果等。
所有主流瀏覽器均支持服務器發(fā)送事件,除了 Internet Explorer。
<h1>獲取服務端更新數(shù)據(jù)</h1>
<div id="result"></div>
if(typeof(EventSource)!=="undefined")
{
var source=new EventSource("demo_sse.php");
source.onmessage=function(event)
{
document.getElementById("result").innerHTML+=event.data + "<br>";
};
}
else
{
document.getElementById("result").innerHTML="抱歉,你的瀏覽器不支持 server-sent 事件...";
}
六、HTML5 WebSocket
WebSocket 是 HTML5 開始提供的一種在單個 TCP 連接上進行全雙工通訊的協(xié)議。
WebSocket 使得客戶端和服務器之間的數(shù)據(jù)交換變得更加簡單,允許服務端主動向客戶端推送數(shù)據(jù)。在 WebSocket API 中,瀏覽器和服務器只需要完成一次握手,兩者之間就直接可以創(chuàng)建持久性的連接,并進行雙向數(shù)據(jù)傳輸。
在 WebSocket API 中,瀏覽器和服務器只需要做一個握手的動作,然后,瀏覽器和服務器之間就形成了一條快速通道。兩者之間就直接可以數(shù)據(jù)互相傳送。
現(xiàn)在,很多網(wǎng)站為了實現(xiàn)推送技術,所用的技術都是 Ajax 輪詢。輪詢是在特定的的時間間隔(如每1秒),由瀏覽器對服務器發(fā)出HTTP請求,然后由服務器返回最新的數(shù)據(jù)給客戶端的瀏覽器。這種傳統(tǒng)的模式帶來很明顯的缺點,即瀏覽器需要不斷的向服務器發(fā)出請求,然而HTTP請求可能包含較長的頭部,其中真正有效的數(shù)據(jù)可能只是很小的一部分,顯然這樣會浪費很多的帶寬等資源。
HTML5 定義的 WebSocket 協(xié)議,能更好的節(jié)省服務器資源和帶寬,并且能夠更實時地進行通訊。
詳情和代碼示例:.
七、HTTP狀態(tài)消息
1xx: 信息
2xx: 成功
3xx: 重定向
4xx: 客戶端錯誤
5xx: 服務器錯誤
詳情
八、HTTP 方法:GET 對比 POST
兩種最常用的 HTTP 方法是:GET 和 POST。
什么是 HTTP ?
超文本傳輸協(xié)議(HTTP)的設計目的是保證客戶端與服務器之間的通信。
HTTP 的工作方式是客戶端與服務器之間的請求-應答協(xié)議。
web 瀏覽器可能是客戶端,而計算機上的網(wǎng)絡應用程序也可能作為服務器端。
舉例:客戶端(瀏覽器)向服務器提交 HTTP 請求;服務器向客戶端返回響應。響應包含關于請求的狀態(tài)信息以及可能被請求的內(nèi)容。
GET - 從指定的資源請求數(shù)據(jù)。
POST - 向指定的資源提交要被處理的數(shù)據(jù)。
GET 方法
請注意,查詢字符串(名稱/值對)是在 GET 請求的 URL 中發(fā)送的:
/test/demo_form.php?name1=value1&name2=value2
有關 GET 請求的其他一些注釋:
GET 請求可被緩存
GET 請求保留在瀏覽器歷史記錄中
GET 請求可被收藏為書簽
GET 請求不應在處理敏感數(shù)據(jù)時使用
GET 請求有長度限制
GET 請求只應當用于取回數(shù)據(jù)
POST 方法
請注意,查詢字符串(名稱/值對)是在 POST 請求的 HTTP 消息主體中發(fā)送的:
有關 POST 請求的其他一些注釋:
POST 請求不會被緩存
POST 請求不會保留在瀏覽器歷史記錄中
POST 不能被收藏為書簽
POST 請求對數(shù)據(jù)長度沒有要求
下面的表格列出了其他一些 HTTP 請求方法:
原文鏈接:https://blog.csdn.net/weixin_39834961/article/details/103765680
作者:yhlyeah
架提供集成環(huán)境,用于開發(fā)和設計網(wǎng)站以加快交付速度。有很多集成開發(fā)環(huán)境(IDE)讓我們看看最頂級的框架。
HTML 5包含了各種先進的元素和新的元素,易于實現(xiàn)并增強了許多功能。這種標記語言對Web服務器和腳本語言非常友好。響應式設計通過HTML 5變得簡單和互動。許多框架被發(fā)布以有效和高效地支持和實現(xiàn)HTML 5??蚣芴峁┘森h(huán)境,用于開發(fā)和設計網(wǎng)站以加快交付速度。有很多集成開發(fā)環(huán)境(IDE)讓我們看看最頂級的框架。
1.JO
JO是簡單的Web應用程序開發(fā)框架。這也支持javascript和css3。編碼的交互區(qū)域使您可以更快更輕松地實現(xiàn)和編輯代碼。此集成開發(fā)系統(tǒng)支持與各種瀏覽器(如Chrome,IE,iOS等)兼容。非常支持開發(fā)各種移動和Web應用程序。
2.iio Engine
iio Engine是一個基于HTML5的Web應用程序開發(fā)系統(tǒng)。這提供了一個環(huán)境,不僅有助于開發(fā)Web應用程序,而且還提供響應式應用程序。該框架包含許多強大的功能和一個調(diào)試系統(tǒng),可幫助提供錯誤免費應用程序。它被設計為輕量級,可以在系統(tǒng)上更快地安裝。
3.Gridless
Gridless是未來的HTML5和CSS3框架。這個開發(fā)系統(tǒng)支持各種排版,并協(xié)助提供一個適用于任何地方的響應式網(wǎng)站,如舊手機到最新手機或平板電腦。該系統(tǒng)適用于更新的技術,如CSS標準化,IE錯誤修復等等。
4.LimeJs
LimeJs是為基于超文本標記語言5創(chuàng)建應用程序而開發(fā)的。可用于最新技術的瀏覽器,如觸摸屏手機和平板電腦。在這里,你只需要在開發(fā)游戲的時候做更少的代碼就可以更快更輕松地完成響應和充分的交互。
5.Reverie
Reverie是基于最新HTML版本的WordPress框架。這提供了一個響應式搜索引擎友好的應用程序 它支持各種令人驚嘆的布局,并有助于增強業(yè)務。
6.Montage
Montage是先進的Web應用程序開發(fā)系統(tǒng),支持設計應用程序的可擴展性和易于維護。它帶有拖放屬性。在這里,您可以開發(fā)可重用的用戶界面組件和模塊,可以在組件和控制器之間綁定屬性,并使用文檔對象模型和更新來確保用戶交互的順利進行。
7.Joshfire
Joshfire,一個杰出的基于HTML 5的框架。該IDE允許開發(fā)人員簡單快速地創(chuàng)建支持各種屏幕的Web應用程序,如平板電腦,超級圖書和智能電視。開發(fā)系統(tǒng)的結(jié)構(gòu)增強了內(nèi)容優(yōu)化。
Lungo提供基于趨勢HTML系列的可擴展性和響應式Web應用程序開發(fā)框架。這是幫助創(chuàng)建Web應用程序的輕量級標準集成環(huán)境。Lungo提供對JavaScript編碼的完全控制。
希望這份清單能夠拓寬視野,并催生使用這些框架開發(fā)網(wǎng)站的潛力。上述大多數(shù)框架都是免費提供的,只需點擊幾下即可輕松下載和安裝。如果您在下載或列表中提供的信息中發(fā)現(xiàn)任何框架問題,請與下面給出的評論部分分享。
*請認真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。