網站優化——前端部分

来源:http://www.cnblogs.com/zxjwlh/archive/2016/12/01/6120471.html
-Advertisement-
Play Games

開篇語 作為一個前端的菜鳥,總是在面試的時候被問及一些優化的問題,說實話,回答的時候總是心虛,因為確實沒有真真正正做過優化對比,也不知道從何說起,今天在網上收集一些例子加以總結,日後若是開發用到,也能一一對照,把自己開發的網站做到最優化! 網站優化 一個網站的優化,前端只是很小的一部分。大到系統架構 ...


開篇語

作為一個前端的菜鳥,總是在面試的時候被問及一些優化的問題,說實話,回答的時候總是心虛,因為確實沒有真真正正做過優化對比,也不知道從何說起,今天在網上收集一些例子加以總結,日後若是開發用到,也能一一對照,把自己開發的網站做到最優化!

網站優化

一個網站的優化,前端只是很小的一部分。大到系統架構,小到頁面HTML佈局,無一不影響這一個網站的用戶體驗。由於現在知識面還比較窄,對架構方面的優化(伺服器集群、業務分離、NOSQL、資料庫設計、緩存設置、單點登錄)理解不全面,本篇就先只總結前端的一些優化技巧,有不全或者不對的地方,還請各位留言指正,大神勿噴哦,小弟學習也不容易呢,O(∩_∩)O!

 

前端優化條例:(雅虎23條軍規)

1. 減少HTTP請求次數 
合併圖片、CSS、JS,改進首次訪問用戶等待時間。 
2. 使用CDN 
就近緩存==>智能路由==>負載均衡==>WSA全站動態加速 
3. 避免空的src和href 
當link標簽的href屬性為空、script標簽的src屬性為空的時候,瀏覽器渲染的時候會把當前頁面的URL作為它們的屬性值,從而把頁面的內容載入進來作為它們的值。測試 
4. 為文件頭指定Expires 
使內容具有緩存性。避免了接下來的頁面訪問中不必要的HTTP請求。 
5. 使用gzip壓縮內容 
壓縮任何一個文本類型的響應,包括XML和JSON,都是值得的。舊文章 
6. 把CSS放到頂部 
7. 把JS放到底部 
防止js載入對之後資源造成阻塞。 
8. 避免使用CSS表達式 
9. 將CSS和JS放到外部文件中 
目的是緩存,但有時候為了減少請求,也會直接寫到頁面里,需根據PV和IP的比例權衡。 
10. 權衡DNS查找次數 
減少主機名可以節省響應時間。但同時,需要註意,減少主機會減少頁面中並行下載的數量。 
IE瀏覽器在同一時刻只能從同一功能變數名稱下載兩個文件。當在一個頁面顯示多張圖片時,IE 用戶的圖片下載速度就會受到影響。所以新浪會搞N個二級功能變數名稱來放圖片。 
11. 精簡CSS和JS 
12. 避免跳轉 
同域:註意避免反斜杠 “/” 的跳轉; 
跨域:使用Alias或者mod_rewirte建立CNAME(保存功能變數名稱與功能變數名稱之間關係的DNS記錄) 
13. 刪除重覆的JS和CSS 
重覆調用腳本,除了增加額外的HTTP請求外,多次運算也會浪費時間。在IE和Firefox中不管腳本是否可緩存,它們都存在重覆運算JavaScript的問題。 
14. 配置ETags 
它用來判斷瀏覽器緩存里的元素是否和原來伺服器上的一致。比last-modified date更具有彈性,例如某個文件在1秒內修改了10次,Etag可以綜合Inode(文件的索引節點(inode)數),MTime(修改時間)和Size來精準的進行判斷,避開UNIX記錄MTime只能精確到秒的問題。 伺服器集群使用,可取後兩個參數。使用ETags減少Web應用帶寬和負載 
15. 可緩存的AJAX 
“非同步”並不意味著“即時”:Ajax並不能保證用戶不會在等待非同步的JavaScript和XML響應上花費時間。 
16. 使用GET來完成AJAX請求 
當使用XMLHttpRequest時,瀏覽器中的POST方法是一個“兩步走”的過程:首先發送文件頭,然後才發送數據。因此使用GET獲取數據時更加有意義。 
17. 減少DOM元素數量 
是否存在一個是更貼切的標簽可以使用?人生不僅僅是DIV+CSS 
18. 避免404 
有些站點把404錯誤響應頁面改為“你是不是要找***”,這雖然改進了用戶體驗但是同樣也會浪費伺服器資源(如資料庫等)。最糟糕的情況是指向外部 JavaScript的鏈接出現問題並返回404代碼。首先,這種載入會破壞並行載入;其次瀏覽器會把試圖在返回的404響應內容中找到可能有用的部分當作JavaScript代碼來執行。 
19. 減少Cookie的大小 
20. 使用無cookie的域 
比如圖片 CSS 等,Yahoo! 的靜態文件都在 yimg.com 上,客戶端請求靜態文件的時候,減少了 Cookie 的反覆傳輸對主功能變數名稱 (yahoo.com) 的影響。 
21. 不要使用濾鏡 
png24的在IE6半透明那種東西,別亂使,淡定的切成PNG8+jpg 
22. 不要在HTML中縮放圖片 
23. 縮小favicon.ico並緩存

總結:以上每一條優化方式,網上都有相應的操作方法,個人覺的是在開發前熟記軍規,避免二次開發。當然特殊情況除外,燒銀子的優化得看自身情況嘍!


測試篇:

智者千慮必有一失,膨大的項目開發完畢,避免不了會有疏忽的地方。這時我們需要通過一些測試工具進行專業性的測試,測試後再對症下藥,做到力所能及的最大優化!

1、YSlow:YSlow是yahoo美國開發的一個頁面評分插件,非常的棒,從中我們可以看出我們頁面上的很多不足,並且可以知道我們改怎麼卻改進和優化。

     YSlow使用方式:

     http://lusongsong.com/reed/362.html

     YSlow跌評分規則:

   (1)http://www.blueidea.com/tech/web/2008/6133.asp

   (2)http://www.blueidea.com/tech/web/2008/6133_2.asp

2、Fiddler:Fiddler的功能很強大,它不僅可以查看HTTP的通信信息,也可以進行分析,從而發現通信過程中的問題,為優化網站頁面和提高性能提供依據。

     Fiddler優化案例:

     http://www.cnblogs.com/lerit/archive/2010/11/03/1867898.html

總結:

感覺網站就像一個人一樣,開發者作為父母,在塑造階段就應考慮好給他一個健全的體魄,倘若迫不得已不能返工重建,至少我們應該帶他去看病檢測,以方便知道他哪裡不舒服,好對症下藥。總之,盡自己的所能塑造一個完美的個體,才能不辱使命說自己是一個合格的“造物者”!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 前言 更好的閱讀體驗請:我的微信小程式入門踩坑之旅 小程式出來也有一段日子了,剛出來時也留意了一下。不過趕上生病,加上公司里也有別的事,主要是自己犯懶,就一直沒做。這星期一,趕緊趁著這股熱乎勁,也不是很忙,終於磨磨唧唧的寫了個小demo,(當然還有好多介面沒有使用)。 預計閱讀時間:5min 正文 ...
  • 最近的項目在使用AngulaJs,對JS代碼的測試問題就擺在了面前。通過對比我們選擇了 Karma + jasmine ,使用 Jasmine做單元測試 ,Karma 自動化完成,當然瞭如果使用 Karma + jasmine 前提是必須安裝 Nodejs。 安裝好 Nodejs ,使用 npm 安 ...
  • 正則表達式: 匹配(說明): 使用說明: (1)、地址必須以http/https/ftp/ftps開頭; (2)、地址不能包含雙位元組符號或非鏈接特殊字元。 ...
  • 代碼為什麼要這樣寫? 而不這樣? 很明顯 我們都知道第一個性能要比第二個好,為什麼呢? 首先要瞭解 js引擎的 Data Access 數據訪問。這裡只說 非優化的js引擎。 1、訪問 Literal values 直接量 eg:字元串,數字,布爾值,對象,數組,函數,正則表達式,具有特殊意義的空值 ...
  • 我用過的兩個版本: v0.5.2-dev,0.4.5 這裡針對於提交方法進行說明一下,如下代碼: ...
  • 很酷的菜單-jQuery Wheel 環形菜單插件5種效果演示 線上預覽 下載地址 實例代碼 <div class="container"> <!-- Top Navi --> <div class="header"> <h1>jQuery Wheel 環形菜單插件 Demo 1: Default ...
  • 一、BFC與IFC 1.1、BFC與IFC概要 BFC(Block Formatting Context)即“塊級格式化上下文”, IFC(Inline Formatting Context)即行內格式化上下文。常規流(也稱標準流、普通流)是一個文檔在被顯示時最常見的佈局形態。一個框在常規流中必須屬 ...
  • 一、條紋背景 利用background為linear-gradient函數實現,linear-gradient取值如下: <angle>:角度,漸變的方向 to left right top bottom color:指定顏色 color-stop:指定漸變的起止顏色 length:用長度值指定起止 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...