久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

Web前端頁面性能優化小結

時間:2019-05-12 15:20:44下載本文作者:會員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關的《Web前端頁面性能優化小結》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《Web前端頁面性能優化小結》。

第一篇:Web前端頁面性能優化小結

Web前端頁面性能優化小結

Web前端頁面性能優化小結

影響用戶訪問的最大部分是前端的頁面。網站的劃分一般為二:前端和后臺。我們可以理解成后臺是用來實現網站的功能的,比如:實現用戶注冊,用戶能夠為文章發表評論等等。而前端呢?其實應該是屬于功能的表現。

而我們建設網站的目的是什么呢?不就是為了讓目標人群來訪問嗎?所以我們可以理解成前端才是真正和用戶接觸的。

除了后臺需要在性能上做優化外,其實前端的頁面更需要在性能優化上下功夫,只有這樣才能給我們的用戶帶來更好的用戶體驗。不僅僅如此,如果前端優化得好,他不僅可以為企業節約成本,他還能給用戶帶來更多的用戶,因為增強的用戶體驗。說了這么多,那么我們應該如何對我們前端的頁面進行性能優化呢?

前端的頁面主要包括xhtml,css,js。其實xhtml就是現實中所談到的內容,頁面的內容:文字,圖片,flash,視頻等。

而前端開發工作者可以控制的是什么呢?那就是xhtml,css,js的代碼及相應的修飾(背景)圖片。下面我就根據我自己的經驗來說說:

一、提倡前端開發工程師在書寫xhtml的時候做到結構語義化。結構中主要包括了head和body兩個部分,但是我們經常說的是結構語義化主要是body中的標簽,但是我在這里還是簡單的說一下 head,head中其實包括了一些對于我們seo很有用的一些東西,比如

title,description,keywords,這些東西在蜘蛛抓取的時候都是有幫助的,當然,還有其他的一些,我在此就不一一說明了,比如設置緩存等一些其他的信息。那么body中的話,包括的標簽就很多了,我覺得作為一個合格的前端開發人員你應該去熟悉他們,比如div,span,h,ul,ol,dl,p等等這類的標簽的使用。應該非常合理,還有就是注意h標簽的斷層,及h1標簽的使用,這些都是非常重要的。同時在我們的結構中不要出現style和onclick這樣的內聯的樣式和事件.。希望大家能夠注意結構與表現、行為的分離。(ps:標簽語義化的好處:1.有利于搜索引擎;2.結構清晰的html在團隊合作中的作用,就不必說了吧;3.有利于盲人屏幕閱讀器。至于如何做到標簽語義化,就看個人的理解了,這方面我也覺得模糊,跟個人的習慣估計也有一定的關系,總之鄒惠斌老師是認為我的標簽不語義的。)

二、css(http://zhi.ujiuye.com/web/css/),js文件數量及大小的優化 那么關于css、js的優化的話,一般情況下建議css和js采用外聯式。但是如果你的頁面內容比較多,設計師把整個效果做得比較花的話,恐怕 css就非常多了,那么這種情況下,你一定要把你的css規劃好,盡量的采用縮寫,這樣可以減少css文件的大小,那么對css做相應的規劃也可以減少 css的個數,減少http請求數,js同理。(ps:減少重復性代碼,代碼重復利用,在這里顯得特別重要)

三、背景圖片數量及大小的優化

當我們將設計師的設計稿還原成靜態頁面后,除非頁面所有的修飾全是色塊,內容全是文字,沒有圖片,如果不是這樣的話,那么我們需要對圖片做優化處理。當然內容圖片我們是沒有辦法了,因為他是屬于內容部分的,一般情況是由于編輯處理,當然,我在還是有一個小小的建議,如果我們的網站中需要有內容圖片,希望編輯能夠將他們最優化以后,在進行上傳,一會兒告訴我的方法,下面我在說說,作為前端開發應該如何處理我們的修飾(背景)圖片。由于我們的背景圖片數量比較多,這樣的話,會給服務器帶來影響,增加了http請求數,我們是否有一種好的解決辦法呢?這個答案是肯定的,如果你是一個合格的前端開發,你應該清楚,在我們的css定義背景的時候,可以通過坐標來實現對背景進行定位的,既然如此,那么我們可以將這些背景合并起來,這樣即可減少http請求數,同時,我們在背景整合的時候,也需要考慮圖片質量,同時也需要考慮圖片的大小(ps:這里建議使用png8格式的圖片結合css sprite,同樣的圖片,png8格式會相對來比gif小)

四、內容圖片的大小的優化

其實剛才已經說了內容圖片的問題,那么我在這里呢,告訴大家一個比較簡單的方法,就是使用雅虎提供的一個工具。他就是smushit:http:// 規范在文檔 內加載你的樣式表。

對于擁有較大瀏覽量的首頁來說,有一種技術可以平衡內置代碼帶來的 http 請求減少與通過使用外部文件進行緩存帶來的好處。其中一個就是在首頁中內置 javascript 和 css,但是在頁面下載完成后動態下載外部文件,在子頁面中使用到這些文件時,它們已經緩存到瀏覽器了。

更多知識干貨分享,盡在中公優就業,>>>點擊進入。

點擊查看>>>中公IT優就業封閉式培訓,包食宿,學費貸款,交通補貼,推薦就業

第二篇:網站前端性能優化總結

一、服務器側優化

1.添加 Expires 或 Cache-Control 信息頭

某些經常使用到、并且不會經常做改動的圖片(banner、logo等等)、靜態文件(登錄首頁、說明文檔等)可以設置較長的有效期(expiration date),這些HTTP頭向客戶端表明了文檔的有效性和持久性。如果有緩存,文檔就可以從緩存(除已經過期)而不是從服務器讀取。接著,客戶端考察緩存中的副本,看看是否過期或者失效,以決定是否必須從服務器獲得更新。

各個容器都有針對的方案,,以 Apache 為例:

ExpiresActive On ExpiresByType image/gif “access plus 1 weeks”

表示gif文件緩存一周,配置可以根據具體的業務進行調整,具體配置可以參考:http://lamp.linux.gov.cn/Apache/ApacheMenu/mod/mod_expires.html

2.壓縮內容

對于絕大多數站點,這都是必要的一步,能有效減輕網絡流量壓力。

DeflateCompressionLevel 9 AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-httpd-php AddOutputFilter DEFLATE html htm xml php css js

表示zlib在壓縮時可以最大程度的使用內存,壓縮html、文本、xml和php這幾種類型的文件,指定擴展名為html、htm、xml、php、css和js的文件啟用壓縮。

具體配置可以參考:http://lamp.linux.gov.cn/Apache/ApacheMenu/mod/mod_deflate.html

3.設置 Etags

在使用etags之前,有必要復習一下 RFC2068 中規定的返回值 200 和 304 的含義:

200--OK 304--Not Modified

客戶端在請求一份文件的時候,服務端會檢查客戶端是否存在該文件,如果客戶端不存在該文件,則下載該文件并返回200;如果客戶端存在該文件并且該文件在規定期限內沒有被修改(Inode,MTime和Size),則服務端只返回一個304,并不返回資源內容,客戶端將會使用之前的緩存文件。而etags就是判斷該文件是否被修改的記號,與服務器端的資源一一關聯,所以etags對于CGI類型的頁面緩存尤其有用。

下圖是優化前的首頁:(注意,此時沒有壓縮首頁圖片,即使使用了緩存,仍需要5s左右的時間)

化前的某頁面

需要注意的是,使用etags會增加服務器端的負載,在實際應用中需要自行平衡。

二、Cookie優化

1.減小Cookie體積

HTTP coockie可以用于權限驗證和個性化身份等多種用途。coockie內的有關信息是通過HTTP文件頭來在web服務器和瀏覽器之間進行交流的。因此保持coockie盡可能的小以減少用戶的響應時間十分重要。

使cookie體積盡量??;

在合適的子域名上設置bookie,以免影響其他子域名下的響應;

設置合理的過期時間,去掉不必要的cookie。

下面對比一下各個網站的cookie:

圖中可以看出,6K的cookie顯然是不必要的。

2.對于頁面內容使用無coockie域名

當瀏覽器在請求中同時請求一張靜態的圖片和發送coockie時,服務器對于這些coockie不會做任何地使用。因此它們只是因為某些負面因素而創建的網絡傳輸。所以你應該確定對于靜態內容的請求是無coockie的請求。創建一個子域名并用他來存放所有靜態內容。

例如,域名是

3.切分組件到多個域

主要的目的是提高頁面組件并行下載能力,但注意,也不要同時使用過多的域名,否則就會出現第一條DNS lookup過多的問題,一般情況下兩個域名就可以了。

4.杜絕 http 404 錯誤

對頁面鏈接的充分測試加上對 Web 服務器 error 日志的不斷跟蹤可以有效減少 404 錯誤,并提升用戶體驗。

后記:

這次總結給我帶來的啟發并不在于提升系統性能性能本身,提升性能只是一個很表面上的東西,網上的方法有很多,測試的方法也有很多,照著都做一遍,性能確實會有所提升,但是這種知其然而不知其所以然的性能提升是沒有意義的,這便是本文的目的所在。

第三篇:web前端個人簡歷

個人簡歷

個人信息

姓名:xxxx 性別:男

出生日期:1993.03 婚姻狀況:未婚 工作所在地:北京 家庭所在地:湖北

聯系電話:18xxxxxx

電子郵箱:xxxxxx@qq.com

專業技能

1、熟練使用Sublime、Photoshop等軟件,掌握網站效果圖的制作、切片以及HTML頁面代碼優化等技術;

2、精通HTML5+CSS3、DIV+CSS等網站前端技術;

3、能夠熟練編寫標準前端代碼,熟悉瀏覽器兼容問題解決方案;

4、熟練掌握javascript語言,精通jQuery庫、bootstrap庫,能夠實現網頁的動態效果與頁面交互;

5、熟練掌握響應式設計,能夠開發移動端頁面;熟練使用swiper手機端應用庫;

6、了解node后臺,熟練掌握Ajax技術;

7、了解gulp自動化構建工具,了解less,echarts圖表庫;

工作經驗

2015.07– 至今 工作職責: 北京第嘉傳媒文化有限公司 職位名稱:前端開發工程師

負責公司產品或項目Web前端開發,根據產品需求和UI效果圖利用sublime編程軟件進行div/css標準網頁制作,Js邏輯設計與開發、jQuery特效編寫以及使用插件實現特效,解決主流瀏覽器兼容性問題,對網站用戶體驗性能進行優化,完成產品前端展示效果和交互功能。

2014.09– 2015.6

工作職責: 秦皇島市金鑾之巔科技開發有限公司

職位名稱:前端開發工程師

負責公司項目的前端修改調試和開發工作,精確的將網站設計圖重構成html 頁面。從ps切圖到div/css標準網頁制作及主流瀏覽器兼容問題的解決,并與后臺緊密配合,確保代碼有效鏈接。

項目經歷: PC端 中國智力運動網

http://www.tmdps.cn)是由泰康人壽保險股份有限公司全資發起成立的大型互聯網保險公司,產品涵蓋意外險、理財險、健康險、旅游險等多種保險。

個人站

kafeihaoka.github.io

教育背景

2011.09-2015.06 燕山大學里仁學院 電子信息工程 本科 求職意向

職位:Web 前端開發 工作地點:北京

第四篇:Web前端工作總結

Web前端學習總結

一.名詞解釋 1.橫切

在固定頁面的寬度(按柵格化進行)并且對高度沒有限制的容器稱為一個標準橫切 2.留白 兩個容器或碎片之間的上、下、左、右的空白距離 3.繼承

元素可以從其父級元素中獲得一些可為自己使用的屬性或值。4.圖片定位

把圖片元素放置到一個靜態的、相對的、絕對的、或固定的位置中,利用CSS中對圖片進行遮罩屬性,多用于頁面中的修飾圖 5.底圖

頁面中在標簽中使用的背景圖 6.齊底(圖)線 用于區分橫切或碎片結束的線或圖 7.頁面結構

頁面的基礎框架,由橫切、布局元素組成 8.焦點區(圖)最易注意的區域 9.導航

在頁面中具有導向性的鏈接集合 10.頭圖 頁面主題圖片 11.間距

碎片或文字間的距離 12.行高

文字段落中行與行之間的距離 13.首行縮進 文字段落首行縮進 14.浮動

使被定義的區域脫離正常的頁面文檔流 15.碎片 由文字、圖片組合成的內容區域 16.通欄廣告 與頁面內容區同寬的廣告區域 17.功能按鈕 具有交互屬性的按鈕 18.私有樣式

當前頁面獨立使用的樣式,不具備公用性 19.水平(垂直)居中

在頁面中的某個元素處于父級的上下或左右的相同距離 20.標準頭(尾)定義相同的頁面頭或尾元素集合 二.文本格式化 1.段落:p 2.斜體:address(聯系信息)em(強調)i(突出不同)cite(引用)dfn(首次定義術語)3.粗體:strong(重要)b(提醒)4.圖片塊:figure 5.引述文段,段落縮進:blockquote 6.背景顏色:mark 7.虛線下劃線:abbr 8.上標下標:sub/sup 9.下劃線:ins 10.刪除線:del(標記已刪除內容)s(標記不準確內容)11.等寬字體:code 12.預格式化:pre 13.字號減小,表注釋:small 14.時間:time 15.換行:br 16.html5定義區塊:header nav article section aside footer div span 三.表單表格

1.

...
2.表單元素的組織:
...
...
3.創建各種框: 注:text→password/url/tel/email Id:為了讓對應的標簽識別,添加CSS Name:為了讓服務器和腳本識別,通常與id設為一樣 Size:文本框大小 Maxlength:能輸入的最大字符數 Pattern:正則表達式

4.添加標簽: 5.單(多)選按鈕:

注:id各自唯一,name必須相同。checked:默認選擇 6.下拉框:

注:size:選擇框的高度 multiple:允許多選 selected:默認選擇 用?對選擇框進行分組 7.上傳文件: 注:size:輸入路徑和文件名的字段的寬度 8.禁用表單元素: 9.創建提交按鈕: 創建帶圖像的提交按鈕: 創建圖像按鈕: Submit→reset重置

10.文本區域: 11.表格 :

.. ..
.. .. ..
四.文本格式化 1.{font:(斜體 粗體 小型大寫字母)字體大小(必有)行距 字體集(必有);} 2.文本背景:{ background:#foc url(1.jpg)repeat-x scroll 0 0;} 3.字間距:word-spacing:12px;4.字偶距:letter-spacing:12px;5.縮進增加:text-indent:12px;6.小型大寫字母: font-variant:small-caps;7.文本對齊:text-align:left;適用于block,inline-block 8.單詞大小寫: text-transform:capitalize(單詞首字母大寫)/uppercase(大寫)/lowercase(小寫)9.文本上的線:text-decoraion:underline/overline/line-through;11.空格:white-space:pre(顯示所有空格回車)/nowrap(非斷行空格); 12.h3—16px;h5—12px;verdana,Geneva,sans-serif;13.列表屬性: li{list-style:url(1.jpg)inside square;} 五.CSS布局

1.width:不包括padding,border,margin;max-width設置外圍限制; 2.浮動:float:left;清除浮動:clear:both;3.設置邊框: border:dotted 4px red;(dotted點狀、dashed虛線、solid實線)4.使元素對齊:vertical-align:baseline/middle/text-bottom..5.顯示:display:black/inline/inline-block;6.顯示:visibility:visible/hiddle;7.相對定位:{position:relative;top:5px;} 相對于該元素的原始位置 8.絕對定位:{position:absolute;top:5px;} 相對于body或離他最近定位的祖先元素 9.三維位置:{z-index:50;} 越大的在最上面

10.廠商前綴:-webkit-(safari)–moz-(firefox)–ms-(IE)–o-(opera)11.創建圓角: {-moz-border-radius-topleft:50px;-webkit-border-top-left-radius:50px;border-top-left-radius:50px;}(左上角,角的半徑是50px){border-radius:50px;}(所有角簡寫)12.創建橢圓角:{? ? border-radius:40px/20px;}(x半徑/y半徑)13.創建圓形:{? ? border-radius:50px;} 50px為元素半徑大小 14.文本加陰影:{text-shadow: 2px 5px 5px #999;} x/y/模糊半徑

15.元素加陰影:{(-moz-/-webkit-)box-shadow:(inset內陰影)2px 5px 5px #999;5px 10px 2px #555(多重陰影);} 16.多重背景:{background:#000 url(1.png)50% 102% no-repeat,#222 url(2.png)12px-150px repeat-x;} 17.透明度: {opacity:.5;} 0→1 透明→不透明

18.漸變背景:{background:linear-gradient(left,#000,#999);}(left :漸變線沿逆時針方向轉至水平線的角度)六.html5視頻音頻

1.html5支持3種視頻:.ogg/.ogv.mp4/.m4v.webm 2.添加視頻: 視頻屬性:src autoplay controls muted loop poster width height preload 3.為視頻添加多個來源: 4.html5支持5中音頻:.ogg.mp3.wav.aac.mp4 5.添加音頻: 音頻屬性:src autoplay controls muted loop preload。多個來源同video。七.一些約定

我們結合常用的一些命名習慣,再結合CSS的實際應用,整理出一些較好的命名習慣。1.樣式名稱首字母統一為小寫字母,不能為數字,下劃線及特殊字符;

3.設置邊框: border:dotted 4px red;(dotted點狀、dashed虛線、solid實線)4.使元素對齊:vertical-align:baseline/middle/text-bottom..5.顯示:display:black/inline/inline-block;6.顯示:visibility:visible/hiddle;7.相對定位:{position:relative;top:5px;} 相對于該元素的原始位置 8.絕對定位:{position:absolute;top:5px;} 相對于body或離他最近定位的祖先元素 9.三維位置:{z-index:50;} 越大的在最上面

10.廠商前綴:-webkit-(safari)–moz-(firefox)–ms-(IE)–o-(opera)11.創建圓角: {-moz-border-radius-topleft:50px;-webkit-border-top-left-radius:50px;border-top-left-radius:50px;}(左上角,角的半徑是50px){border-radius:50px;}(所有角簡寫)12.創建橢圓角:{? ? border-radius:40px/20px;}(x半徑/y半徑)13.創建圓形:{? ? border-radius:50px;} 50px為元素半徑大小 14.文本加陰影:{text-shadow: 2px 5px 5px #999;} x/y/模糊半徑

15.元素加陰影:{(-moz-/-webkit-)box-shadow:(inset內陰影)2px 5px 5px #999;5px 10px 2px #555(多重陰影);} 16.多重背景:{background:#000 url(1.png)50% 102% no-repeat,#222 url(2.png)12px-150px repeat-x;} 17.透明度: {opacity:.5;} 0→1 透明→不透明

18.漸變背景:{background:linear-gradient(left,#000,#999);}(left :漸變線沿逆時針方向轉至水平線的角度)六.html5視頻音頻

1.html5支持3種視頻:.ogg/.ogv.mp4/.m4v.webm 2.添加視頻: 視頻屬性:src autoplay controls muted loop poster width height preload 3.為視頻添加多個來源: 4.html5支持5中音頻:.ogg.mp3.wav.aac.mp4 5.添加音頻: 音頻屬性:src autoplay controls muted loop preload。多個來源同video。七.一些約定

我們結合常用的一些命名習慣,再結合CSS的實際應用,整理出一些較好的命名習慣。1.樣式名稱首字母統一為小寫字母,不能為數字,下劃線及特殊字符; 2.樣式名盡量語義化或簡寫; 3.樣式名需要組合拼寫時,采用全部小寫拼寫并使用下劃線連接,即:all_keyword; 4.使用px(像素)為基本計量單位; 5.頁面中空格的使用:全角:中文空格 半角;? 6.項目完成包中,文件夾及文件名稱全部采用小寫字母,不使用中文文件名; 7.減少DIV的嵌套層數;

8.給重要圖片加上alt屬性;給重要的元素和截斷的元素加上title; 9.使用正確的注釋方法(詳見“注釋”章節); 10.特殊情況下要求表現和內容分離,代碼中不要涉及任何表現的元素,例如:style、font 等;

11.雙標記簽都要有開始和結束標簽,單標記標簽的后面一定要加“ /”,例如:
等,并且有正確的層次; 12.其它特殊符號: 1)<(<)2)>(>)八.命名空間

8.1外掛樣式名稱 全局:public.css 全局樣式為全站公用,為頁面樣式基礎,頁面中必須包含。結構:layout.css 頁面結構類型復雜,并且公用類型較多時使用。多用在首頁級頁面和產品類頁面中。私有:style.css 獨立頁面所使用的樣式文件,頁面中必須包含。模塊 module.css 產品類頁面應用,將可復用類模塊進行剝離后,可與其它樣式配合使用。默認 default.css 文章 article.css 圖片 photo.css 下載 soft.css 主題 themes.css 實現換膚功能時應用。補丁 mend.css 基于以上樣式進行的私有化修補。8.2 常用名稱(1)頁面結構 容器: container 頁頭:header 內容:content/container/content(A)頁面主體:main 頁尾:footer 導航:nav 側欄:sidebar 欄目:column 頁面外圍控制整體布局寬度:wrapper 左右中:left right center 浮左浮右:fl fr 清除浮動 clear(2)導航 導航:nav 主導航:mainbav 子導航:subnav 頂導航:topnav 邊導航:sidebar 左導航:leftsidebar 右導航:rightsidebar 菜單:menu 子菜單:submenu 標題:title 摘要:summary 路徑:path(3)模塊化命名 模塊頭部:hd 模塊內容部分:bd 模塊底部:ft(4)各內容頁對應 標題:title 副標題:subtitle 屬性:properties 簡介:infor 內容:content 分頁:page 插入廣告:insert_ad 表情:expression 功能選項:options 上下篇:up_down 評論:comments 相關內容:related 下載地址:download 播放地址:play_add(5)功能 標志:logo 廣告:banner 登陸:login 登錄條:loginbar 注冊:regsiter 搜索:search 日期:date 功能區:shop 標題:title 加入:joinus 狀態:status 按鈕:btn 滾動:scroll 標簽頁:tab 文章列表:list 提示信息:msg 當前的:current 小技巧:tips 圖標:icon 注釋:note 指南:guild 服務:service 熱點:hot 新聞:news 下載:download 投票:vote 合作伙伴:partner 友情鏈接:link 版權:copyright 九.基本設置-public.css 9.1 全局設置

上下邊距(margin、padding):0(px)左右邊距(margin):auto(自動)底色(background):#FFF(白色)字體(font-family)、字號(font-szie)、字色(color):”宋體” 12px #666 代碼: /* 全局CSS定義 */ body{margin:0 auto;padding:0;background:#FFF;color:#666;font:12px ‘宋體';} div,form,ul,ol,li,span,p,dl,dt,dd,img{margin:0;padding:0;border:0;} h1,h2,h3,h4,h5,h6{margin:0;padding:0;font-size:12px;font-weight:normal;} ul,ol,li{list-style:none} table,td,input,textarea{font-size:12px} 9.2 頁面標簽初始化設置 1.常用基本標div,form,ul,ol,li,span,p,dl,dt,dd,img 設置基本標簽的間距、邊框默認值為0。2.h1~h6標題

默認標題內字號12px,內外間距為0px,文字不加粗。3.ul,ol,li 列表 默認不顯示項目符號。4.h2 欄目標題

說明:h2標簽被定義為欄目標題特殊使用,在標簽中非標題文字默認居右顯示,主標題文字使用span標簽包含,居左顯示。5.默認鏈接顏色

常態下不顯示文字下劃線,顏色為灰(#333),鼠標懸浮時:顯示文字下劃線,顏色變為暗紅(#ccc)。6.狀態:a:link{未點} a:visited{已點} a:focus{鍵盤選中} a:hover{指針停留} a:active{正在點} 9.3 頁面寬度 默認頁面寬(命名規范):按柵格化進行 9.4.clear 結束容器內各元素的浮動屬性,使相鄰容器或元素節點正常顯示。以下是清除浮動的幾種方法 方法一.clear { clear:both;height:0;font-size:0;line-height:0 } 或.clear { border-top: 1px solid transparent!important;margin-top:-1px!important;border-top: 0px;margin-top: 0px;height: 0px;clear: both;background: none;font-size: 0px;visibility: hidden;} 或.clear{ clear:both;font-size:1px;width:1px;height:0;visibility:hidden;margin-top:0px!important;*margin-top:-1px;line-height:0 } 使用方法:

第五篇:web前端筆試題面試題匯總+前端優化總結

前端是龐大的,包括HTML、CSS、Javascript、Image、Flash等等各種各樣的資源。前端優化是復雜的,針對方方面面的資源都有不同的方式。那么,前端優化的目的是什么?

1.從用戶角度而言,優化能夠讓頁面加載得更快、對用戶的操作響應得更及時,能夠給用戶提供更為友好的體驗。

2.從服務商角度而言,優化能夠減少頁面請求數、或者減小請求所占帶寬,能夠節省可觀的資源。

總之,恰當的優化不僅能夠改善站點的用戶體驗并且能夠節省相當的資源利用。

前端優化的途徑有很多,按粒度大致可以分為兩類,第一類是頁面級別的優化,例如HTTP請求數、腳本的無阻塞加載、內聯腳本的位置優化等;第二類則是代碼級別的優化,例如Javascript中的DOM操作優化、CSS選擇符優化、圖片優化以及HTML結構優化等等。另外,本著提高投入產出比的目的,后文提到的各種優化策略大致按照投入產出比從大到小的順序排列。

一、頁面級優化

1.減少HTTP請求數

這條策略基本上所有前端人都知道,而且也是最重要最有效的。都說要減少HTTP請求,那請求多了到底會怎么樣呢?首先,每個請求都是有成本的,既包含時間成本也包含資源成本。一個完整的請求都需要經過DNS尋址、與服務器建立連接、發送數據、等待服務器響應、接收數據這樣一個“漫長”而復雜的過程。時間成本就是用戶需要看到或者“感受”到這個資源是必須要等待這個過程結束的,資源上由于每個請求都需要攜帶數據,因此每個請求都需要占用帶寬。另外,由于瀏覽器進行并發請求的請求數是有上限的(具體參見此處),因此請求數多了以后,瀏覽器需要分批進行請求,因此會增加用戶的等待時間,會給用戶造成站點速度慢這樣一個印象,即使可能用戶能看到的第一屏的資源都已經請求完了,但是瀏覽器的進度條會一直存在。

減少HTTP請求數的主要途徑包括:

(1).從設計實現層面簡化頁面

如果你的頁面像百度首頁一樣簡單,那么接下來的規則基本上都用不著了。保持頁面簡潔、減少資源的使用時最直接的。如果不是這樣,你的頁面需要華麗的皮膚,則繼續閱讀下面的內容。

(2).合理設置HTTP緩存

緩存的力量是強大的,恰當的緩存設置可以大大的減少HTTP請求。以有啊首頁為例,當瀏覽器沒有緩存的時候訪問一共會發出78個請求,共600多K數據(如圖1.1),而當第二次訪問即瀏覽器已緩存之后訪問則僅有10個請求,共20多K數據(如圖1.2)。(這里需要說明的是,如果直接F5刷新頁面的話效果是不一樣的,這種情況下請求數還是一樣,不過被

緩存資源的請求服務器是304響應,只有Header沒有Body,可以節省帶寬)

怎樣才算合理設置?原則很簡單,能緩存越多越好,能緩存越久越好。例如,很少變化的圖片資源可以直接通過HTTP Header中的Expires設置一個很長的過期頭;變化不頻繁而又可能會變的資源可以使用Last-Modifed來做請求驗證。盡可能的讓資源能夠在緩存中待得更久。關于HTTP緩存的具體設置和原理此處就不再詳述了,有興趣的可以參考下列文章:

HTTP1.1協議中關于緩存策略的描述

Fiddler HTTP Performance中關于緩存的介紹

(3).資源合并與壓縮

如果可以的話,盡可能的將外部的腳本、樣式進行合并,多個合為一個。另外,CSS、Javascript、Image都可以用相應的工具進行壓縮,壓縮后往往能省下不少空間。

(4).CSS Sprites

合并CSS圖片,減少請求數的又一個好辦法。

(5).Inline Images

使用data: URL scheme的方式將圖片嵌入到頁面或CSS中,如果不考慮資源管理上的問題的話,不失為一個好辦法。如果是嵌入頁面的話換來的是增大了頁面的體積,而且無法利用瀏覽器緩存。使用在CSS中的圖片則更為理想一些。

(6).Lazy Load Images

這條策略實際上并不一定能減少HTTP請求數,但是卻能在某些條件下或者頁面剛加載時減少HTTP請求數。對于圖片而言,在頁面剛加載的時候可以只加載第一屏,當用戶繼續往后滾屏的時候才加載后續的圖片。這樣一來,假如用戶只對第一屏的內容感興趣時,那剩余的圖片請求就都節省了。有啊首頁曾經的做法是在加載的時候把第一屏之后的圖片地址緩存在Textarea標簽中,待用戶往下滾屏的時候才“惰性”加載。

2.將外部腳本置底

前文有談到,瀏覽器是可以并發請求的,這一特點使得其能夠更快的加載資源,然而外鏈腳本在加載時卻會阻塞其他資源,例如在腳本加載完成之前,它后面的圖片、樣式以及其他腳本都處于阻塞狀態,直到腳本加載完成后才會開始加載。如果將腳本放在比較靠前的位置,則會影響整個頁面的加載速度從而影響用戶體驗。解決這一問題的方法有很多,在這里有比較詳細的介紹(這里是譯文和更詳細的例子),而最簡單可依賴的方法就是將腳本盡可能的往后挪,減少對并發下載的影響。

3.異步執行inline腳本

inline腳本對性能的影響與外部腳本相比,是有過之而無不及。首頁,與外部腳本一樣,inline腳本在執行的時候一樣會阻塞并發請求,除此之外,由于瀏覽器在頁面處理方面是單線程的,當inline腳本在頁面渲染之前執行時,頁面的渲染工作則會被推遲。簡而言之,inline腳本在執行的時候,頁面處于空白狀態。鑒于以上兩點原因,建議將執行時間較長的inline腳本異步執行,異步的方式有很多種,例如使用script元素的defer屬性(存在兼容性問題和其他一些問題,例如不能使用document.write)、使用setTimeout,此外,在HTML5中引入了Web Workers的機制,恰恰可以解決此類問題。

4.Lazy Load Javascript

隨著Javascript框架的流行,越來越多的站點也使用起了框架。不過,一個框架往往包括了很多的功能實現,這些功能并不是每一個頁面都需要的,如果下載了不需要的腳本則算得上是一種資源浪費-既浪費了帶寬又浪費了執行花費的時間。目前的做法大概有兩種,一種是為那些流量特別大的頁面專門定制一個專用的mini版框架,另一種則是Lazy Load。YUI則使用了第二種方式,在YUI的實現中,最初只加載核心模塊,其他模塊可以等到需要使用的時候才加載。

5.將CSS放在HEAD中

如果將CSS放在其他地方比如BODY中,則瀏覽器有可能還未下載和解析到CSS就已經開始渲染頁面了,這就導致頁面由無CSS狀態跳轉到CSS狀態,用戶體驗比較糟糕。除此之外,有些瀏覽器會在CSS下載完成后才開始渲染頁面,如果CSS放在靠下的位置則會導致瀏覽器將渲染時間推遲。

6.異步請求Callback

在某些頁面中可能存在這樣一種需求,需要使用script標簽來異步的請求數據。類似:

Javascript: /*Callback函數*/ function myCallback(info){ //do something here }

HTML:

cb返回的內容: myCallback('Hello world!');像以上這種方式直接在頁面上寫

主站蜘蛛池模板: 五月丁香六月综合缴清无码| 国产片免费福利片永久| 曝光无码有码视频专区| 少妇人妻无码专区视频| 亚洲熟妇无码乱子av电影| 麻花传媒68xxx在线观看| 热re99久久6国产精品免费| 永久免费看一区二区看片| 国产欧美精品区一区二区三区| 国产精品久久久久久久久久妞妞| 亚洲av激情无码专区在线播放| 国产精品白丝av嫩草影院| 欧美内射深插日本少妇| 国产ww久久久久久久久久| 男人边吃奶边做呻吟免费视频| 好紧好湿太硬了我太爽了视频| 另类亚洲小说图片综合区| 人妻内射一区二区在线视频| 亚洲人成网站在线播放小说| 国产伦子沙发午休系列资源曝光| 色婷婷一区二区三区四区成人网| 图片区 小说区 区 亚洲五月| 一本加勒比hezyo无码人妻| 成人亚洲精品久久久久软件| 少妇真人直播免费视频| 免费无码又爽又刺激网站直播| 亚洲av成人片色在线观看| 国外精品视频在线观看免费| 国产中文欧美日韩在线| 国产思思99re99在线观看| 国内少妇偷人精品视频| 久久99精品国产99久久6| 有码中文av无码中文av| 在线观看无码不卡av中文| 久久精品无码鲁网中文电影| 国精产品源xzl仙踪林仙踪| 色偷偷色噜噜狠狠网站久久| 男女无遮挡xx00动态图120秒| 成人中文乱幕日产无线码| 女人18毛片水真多| 人人妻人人澡人人爽国产|