當前位置:首頁 » 網頁前端 » web前端圖片優化
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

web前端圖片優化

發布時間: 2022-06-08 21:11:34

『壹』 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來做請求驗證。盡可能的讓資源能夠在緩存中待得更久。

『貳』 常見的前端性能優化手段都有哪些都有多大收益

規則01:盡量減少HTTP請求

前端優化的黃金准則指導著前端頁面的優化策略:只有10%-20%的最終用戶響應時間花在接受請求的HTML文檔上,剩下的80%-90%時間花在為HTML文檔所引用的所有組件(圖片、腳本、樣式表等)進行的HTTP請求上。因此,改善響應時間的最簡單途徑就是減少組件的數量,並由此減少HTTP請求的數量。當然很多人就會說,既然這樣,那我們就減少頁面組件的數量不就OK了嗎?那你試試,你會掀起一場性能優化和產品設計之間的大PK。
所以,我們要減少HTTP請求是要平衡性能和設計的。如果找到這個平衡點呢?書中從以下幾個方面做了介紹,我逐一說明:
① 圖片地圖
初看「圖片地圖」四個字,對非專業的前端人員來說一頭霧水,我的第一印象就是這樣的,咱們以京東的移動站點為例,右側用戶和購物車的圖標,正常實現我會選擇如下方式:
<a href=」用戶跳轉頁面URL」>
<div class=」定義用戶icon顯示的樣式表」></div>
</a>
<a href=」購物車跳轉頁面URL」>
<div class=」 定義用戶icon顯示的樣式表」></div>
</a>
這種方式無可厚非的,但是兩張圖片就有兩個HTTP請求,這明顯是增加了頁面中的HTTP請求。那麼我們可以把這兩個HTTP請求變成一個嗎?
答案當然是可以的,這就是圖片地圖:允許在一張圖片上關聯多個URL,而目標URL的選擇取決於用戶單擊了圖片上的哪個位置。
這樣上面京東兩個圖標合並成一張圖片,這樣圖片的HTTP請求就減少了一個。
示例代碼如下:
<img src=合並後的圖片>
<map name=」map1」>
<areashape=」rect」 coords=」0,0,40,40」 href=」用戶跳轉頁面URL」>
<areashape=」rect」 coords=」50,0,90,40」 href=」購物車跳轉頁面URL」>
</map>
不過圖片地圖只支持矩形形狀,其他形狀不支持。
② 請CSS喝「雪碧」(CSS Sprites)CSS Sprites一句話:將多個圖片合並到一張單獨的圖片,這樣就大大減少了頁面中圖片的HTTP請求。
③ 內聯圖片和腳本使用data:URL(Base64編碼)模式直接將圖片包含在Web頁面中而無需進行HTTP請求。但是此種方法存在明顯缺陷:- 不受IE的歡迎;- 圖片太大不宜採用這種方式,因為Base64編碼之後會增加圖片大小,這樣頁面整體的下載量會變大;- 內聯圖片在頁面跳轉的時候不會被緩存。(大圖片可以使用瀏覽器的本地緩存,在首次訪問的時候保存到瀏覽器緩存中,典型的是HTML5的manifest緩存機制以及LocalStorage等)。
④ 樣式表的合並將頁面樣式定義、腳本、頁面本身代碼嚴格區分開,但是樣式表、腳本也不是分割越細越好,因為沒多引用一個樣式表就增加一次HTPP請求,能合並的樣式表盡量合並。一個網站有一個公用樣式表定義,每個頁面只要有一個樣式表就OK啦。
通過以上四個努力之後,你會發現你的網頁響應時間最多能減少一半,這不是作者說大話,也不是我狂吹,我親手用我的移動網站首頁做了一個嘗試,本地測試之後響應時間能減少40%左右。所以減少頁面HTTP請求數量,是一個很重要的原則。遵循此原則可以同時改善首次訪問和後續訪問的響應時間,而每一個網站的首次響應時間會決定用戶之後還來不來的重要原因。
規則02:使用內容發布網路(CDN的使用)
什麼叫內容發布網路(CDN)?它是一組分布在多個不同地理位置的Web伺服器,用於更加有效地向用戶發布內容。主要用於發布頁面靜態資源:圖片、css文件、js文件等。如此,能輕易地提高響應速度。關於CDN的具體詳細原理以及優缺點,各位可以自行詢問度娘或者google。
規則03:添加Expires頭
瀏覽器使用緩存來減少HTTP請求的數據,並減小HTTP響應的大小,使頁面載入更快。Web伺服器使用Expires頭來告訴瀏覽器它可以使用一個組件的當前副本,直到指定的deadline為止。HTTP規范中稱此頭為:在這一時間之後響應被認為失效。個人對這塊表示不想使用,其實就是一句話,把一些css、js、圖片在首次訪問的時候全部緩存到瀏覽器本地,從我做移動網站的過程中發現,其實沒有這么復雜,完全可以使用HTML5提供的本地緩存機制就OK了。關於HTML5本地緩存機制,各位可以查閱相關資料。後續我也會對HTML5的緩存機制進行介紹的。
規則04:壓縮組件(使用Gzip方式)
書中關於壓縮從gzip壓縮方式到如何壓縮講了很多,我想直接跳過,對於做PC網站或者移動網站來說,急需要壓縮的是css文件和js文件,至於如何壓縮,網上有很多在線工具,去挑選一個自己用的順手看的順眼的就好,當然也有人選擇對HTML進行壓縮,這樣也可以。但是實際工作中我沒有這么做。之所謂沒有這么做,是因為我覺得很麻煩。不要鄙視我,畢竟我不是一個真正意義上的前端工程師,哈哈!
規則05:將CSS樣式表放在頂部
如果將css樣式定義放在頁面中或者頁面底部,會出現短暫白屏或者某一區域短暫白板的情況,這和瀏覽器的運營機制有關的,不管頁面如何載入,頁面都是逐步呈現的。所以在每做一個頁面的時候,用Link標簽把每一個樣式表定義放在head中。
規則06:將javascript腳本放在底部
瀏覽器在載入css文件時,頁面逐步呈現會被阻止,直到所有css文件載入完畢,所以要把css文件的引用放到head中去,這樣在載入css文件時不會組織頁面的呈現。但是對於js文件,在使用的時候,它下面所有也頁面內容的呈現都會被阻塞,將腳本放在頁面越靠下的地方,就意味著越多的內容能夠逐步呈現。
規則07:避免使用CSS表達式
CSS表達式是動態玩CSS的一種很強大的方式,但是強大的同時也存在很高的危險性。因為css表達式的頻繁求值會導致css表達式性能低下。如果真想玩css表達式,可以選用只求值一次的表達式或者使用事件處理來改變css的值。
規則08:使用外部javascript和CSS內聯js和css其實比外部文件有更快的響應速度,那為什麼還要用外部呢?因為使用外部的js和css可以讓瀏覽器緩存他們,這樣不僅HTML文檔大小減少,而且不會增加HTTP請求數量。另外,使用外部js和css可以提高組件的可復用性。
規則09:減少DNS查詢
DNS查詢有時間開銷,通常一個瀏覽器查找一個給定主機名的IP地址需要20-120ms。緩存DNS:緩存DNS查詢可以很好地提高網頁性能,一旦緩存了DNS查詢,之後對於相同主機名的請求就無需進行再次的DNS查找,至少短時間內不需要。所以在使用頁面中URL、圖片、js文件、css文件等時,不要使用過多不同的主機名。
規則10:精簡javascript
如何精簡?
其實W3Cfuns已經給大家准備好精簡JS所需的所有工具「前端神器」,這點W3Cfuns為大家做的很不錯,在這個規則里我們就用到「JS壓縮/混淆/美化工具」
最初始的精簡方式:就是移除不必要的字元減小js文件大小,改善載入時間。包括所有的注釋、不必要的空白字元。
高級一點的精簡方式就是:混淆。
它不但會移除不必要的字元,還會改寫代碼,比如函數和變數的名字會被改成很短的字元串,這樣使js代碼更簡練更難閱讀。
但是我一般很少使用混淆,一個現在互聯網時代,代碼沒有必要整的那麼神秘,大可以大家一起share,天下代碼一起抄,只要抄出自己的特色就ok了。
而且一旦使用混淆,對於js代碼的維護和調試都很復雜,因為有時候混淆之後的js代碼完全看不懂。其實實際開發過程中,從文件大小和代碼可復用性來說,不僅僅是js代碼需要精簡,css代碼一樣也很需要精簡。
規則11:避免重定向
重定向的英文是Redirect,用於將用戶從一個URL重新跳轉到另一個URL。
最常見的Redirect就是301和302兩種。
關於重定向的性能影響這里就不說了,自行查閱相關資料吧。
在我們實際開發中避免重定向最簡單也最容易被忽視的一個問題就是,設置URL的時候,最後的「/」,有些人有時候會忽略,其實你少了「/」,這時候的URL就被重定向了,所以在給頁面鏈接加URL的時候切記最後的「/」不可丟。
規則12:刪除重復腳本
重復的js代碼除了有不必要的HTTP請求之外,還會浪費執行js的時間。
將你使用的js代碼模塊化,可以很好地避免這個問題,至於js模塊化如何實現,現在有很多可以使用的開源框架,我用的比較多的是我們公司玉伯的Sea.js。
規則13:配置ETag
Etag(Entity Tag),實體標簽,是Web伺服器和瀏覽器用戶確認緩存組件的有效性的一種機制。寫的很復雜,對我這種非專業的前端開發人員來說,有點過了,關於這個原則有興趣的自己看吧。
規則14:使Ajax可緩存
針對頁面中主動的Ajax請求返回的數據要緩存到本地,當然這個是針對短期內不會變化的數據。如果不確定數據變化周期的話,可以增加一個修改標識的判斷,我正常處理過程中會給一些Ajax請求返回的數據增加一個MD5值的判斷,每次請求會判斷當前MD5是否變化,如果變化了取最新的數據,如果不變化,則不變。

『叄』 yupoo有美國節點嗎

不確定。
圖片優化是web前端優化最關鍵的一環,又拍圖片管家雲計算服務讓電商網站以較小的成本解決這一關鍵的性能問題。

『肆』 如何進行前端優化

1.減少 HTTP 請求....

2.使用 HTTP2

3.使用服務端渲染

4.靜態資源使用 CDN

5.將 CSS 放在文件頭部,JavaScript 文件放 ...

6.使用字體圖標 iconfont 代替圖片圖標

7.善用緩存,不重復載入相同的資源

8.壓縮文件

9.圖片優化

(1).圖片延遲載入

(2). 響應式圖片

(3). 調整圖片大小

(4). 降低圖片質量

(5). 盡可能利用 CSS3 效果代替圖片

(6). 使用 webp 格式的圖片

10. 通過 webpack 按需載入代碼,提取第三庫代碼,減少 ES6 轉為 ES5 的冗餘代碼

11. 減少重繪重排

12. 使用事件委託

13. 注意程序的局部性

14. if-else 對比 switch

15. 查找表

16. 避免頁面卡頓

17. 使用 requestAnimationFrame 來實現視覺變化

18. 使用 Web Workers

19. 使用位操作

20. 不要覆蓋原生方法

21. 降低 CSS 選擇器的復雜性

(1). 瀏覽器讀取選擇器,遵循的原則是從選擇器的右邊到左邊讀取。

(2). CSS 選擇器優先順序

22. 使用 flexbox 而不是較早的布局模型

23. 使用 transform 和 opacity 屬性更改來實現動畫

24. 合理使用規則,避免過度優化

性能優化主要分為兩類:

    • 載入時優化

    • 運行時優化

『伍』 如何優化前端頁面體驗和訪問速度

1.優化圖片

這個絕對是顯而易見的,可以看到圖片占據的頁面內容分量最重。在現代網頁設計中,圖片絕對占據了大部分的內容。你需要針對你的頁面重新定義圖片大小。這能夠有效地幫助你減少頁面大小。而且,這里有很多的功能能夠幫助你針對圖片減肥,例如,Smush.it和TinyPNG
在photoshop中保存web所用格式圖片時候適當的進行壓縮。或者採用圖片延遲載入技術
2.壓縮CSS和Javascript代碼

有效地壓縮CSS和javascript代碼能夠有效地減少頁面大小,你可以刪除空格優化代碼。當然,壓縮代碼對於代碼閱讀不是非常有用,但是一般作為產品環境來說,我們通過這種方式可以有效地減少頁面載入時間。css&js壓縮工具
3.避免使用@import

@import CSS語法允許你載入其它的CSS文件。有時間非常有幫助,但是它並不是和主文件一起下載的,所以可能會增加頁面載入時間。建議使用link標簽,這樣會更加高效。
4.減少HTTP請求次數

減少HTTP請求次數可以幫助你有效的增加網站載入速度。你可以使用如下方式:
a.融合文件
將不同的樣式表css合成一個文件可以減少http請求的次數。同樣對於javascript來說也適用。
b.使用CSS sprites
使用sprites可以幫助你把多個圖片文件放置到一個文件里,這樣可以減少圖片下載的次數。
5.javascript引用位置
例如:javascript的引用和cnzz的統計放到在代碼中放到body之後。

『陸』 web前端開發需要學習什麼知識

第一階段:

HTML+CSS:

HTML進階、CSS進階、div+css布局、HTML+css整站開發、

JavaScript基礎:

Js基礎教程、js內置對象常用方法、常見DOM樹操作大全、ECMAscript、DOM、BOM、定時器和焦點圖。

JS基本特效:

常見特效、例如:tab、導航、整頁滾動、輪播圖、JS製作幻燈片、彈出層、手風琴菜單、瀑布流布局、滾動事件、滾差視圖。

JS高級特徵:

正則表達式、排序演算法、遞歸演算法、閉包、函數節流、作用域鏈、基於距離運動框架、面向對象基礎、

JQuery:基礎使用

懸著器、DOM操作、特效和動畫、方法鏈、拖拽、變形、JQueryUI組件基本使用。

第二階段:

HTML5和移動Web開發

HTML5:

HTML5新語義標簽、HTML5表單、音頻和視頻、離線和本地存儲、SVG、WebSocket、Canvas.

CSS3:

CSS3新選擇器、偽元素、臉色表示法、邊框、陰影、background系列屬性改變、Transition、動畫、景深和深透、3D效果製作、Velocity.js框架、元素進場、出場策略、炫酷CSS3網頁製作。

Bootstrap:

響應式概念、媒體查詢、響應式網站製作、刪格系統、刪格系統原理、Bootstrap常用模板、LESS和SASS。

移動Web開發:

跨終端WEB和主流設備簡介、視口、流式布局、彈性盒子、rem、移動終端JavaScript事件、手機中常見JS效果製作、Zepto.js、手機聚劃算頁面、手機滾屏。

第三階段:

HTTP服務和AJAX編程

WEB伺服器基礎:

伺服器基礎知識、Apache伺服器和其他WEB伺服器介紹、Apache伺服器搭建、HTTP介紹。

PHP基礎:

PHP基礎語法、使用PHP處理簡單的GET或者POST請求、

AJAX上篇:

Ajax簡介和非同步的概念、Ajax框架的封裝、XMLHttpRequest對象詳細介紹方法、兼容性處理方法、Ajax框架的封裝、Ajax中緩存問題、XML介紹和使用。

AJAX下篇:

JSON和JSON解析、數據綁定和模板技術、JSONP、跨域技術、圖片預讀取和lazy-load技術、JQuery框架中的AjaxAPI、使用Ajax實現爆布流案例額。

第四階段:

面向對象進階

面向對象終極篇:

從內存角度到理解JS面向對象、基本類型、復雜類型、原型鏈、ES6中的面向對象、屬性讀寫許可權、設置器、訪問器。

面向對象三大特徵:

繼承性、多態性、封裝性、介面。

設計模式:

面向對象編程思維、單例模式、工廠模式、策略模式、觀察者模式、模板方法模式、代理模式、裝飾者模式、適配器模式、面向切面編程。

第五階段:

封裝一個屬於自己的框架

框架封裝基礎:

事件流、冒泡、捕獲、事件對象、事件框架、選擇框架。

框架封裝中級

運動原理、單物體運動框架、多物體運動框架、運動框架面向對象封裝。

框架封裝高級和補充:

JQuery框架雛形、可擴展性、模塊化、封裝屬於傳智自己的框架。

第六階段:

模塊化組件開發

面向組件編程:

面向組件編程的方式、面向組件編程的實現原理、面向組件編程實戰、基於組件化思想開發網站應用程序。

面向模塊編程

AMD設計規范、CMD設計規范、RequireJS,LoadJS、淘寶的SeaJS。

第七階段:

主流的流行框架

Web開發工作流:

GIT/SVN、Yeoman腳手架、NPM/Bower依賴管理工具、Grunt/Gulp/Webpack。

MVC/MVVM/MVW框架:

Angular.js、Backbone.js、Knockout/Ember。

常用庫:

React.js、Vue.js、Zepto.js。

八階段:

HTML5原生移動應用開發

Cordova:

WebApp/NativeApp/HybirdApp簡介、Cordova簡介、與PhoneGap之間的關系、開發環境搭建、Cordova實戰(創建項目,配置,編譯,調試,部署發布)。

Ionic:

Ionic簡介和同類對比、模板項目解析、常見組件及使用、結合Angular構建APP、常見效果(下拉刷新,上拉載入,側滑導航,選項卡)。

ReactNative:

ReactNative簡介、ReactNative環境配置、創建項目,配置,編譯,調試,部署發布、原生模塊和UI組件、原生常用API。

HTML5+:

HTML5+中國產業聯盟、HTML5PlusRuntime環境、HBuilder開發工具、MUI框架、H5+開發和部署。

第九階段:

Node.js全棧開發:

快速入門:

Node.js發展、生態圈、Io.js、Linux/Windows/OSX環境配置、REPL環境和控制台程序、非同步編程,非阻塞I/O、模塊概念,模塊管理工具、開發流程,調試,測試。

核心模塊和對象:

全局對象global,process,console,util、事件驅動,事件發射器、加密解密,路徑操作,序列化和反序列化、文件流操作、HTTP服務端與客戶端。

Web開發基礎:

HTTP協議,請求響應處理過程、關系型資料庫操作和數據訪問、非關系型資料庫操作和數據訪問、原生的Node.js開發Web應用程序、Web開發工作流、Node.js開發Blog案例。

快速開發框架:

Express簡介+MVC簡介、Express常用API、Express路由模塊、Jade/Ejs模板引擎、使用Express重構Blog案例、Koa等其他常見MVC框架。

希望會給大家帶來幫助!

『柒』 web前端開發圖片放大了不清晰

web前端開發圖片放大了不清晰,需要優化瀏覽器的縮放演算法
在網頁上通過CSS樣式對圖片進行縮放從而導致圖片模糊,究其原因是因為瀏覽器的縮放演算法和圖片處理軟體的不同導致的差異。
所以,要解決這個問題,就需要優化瀏覽器的縮放演算法。CSS屬性image,rendering正是為此而存在的。CSS 屬性用於設置圖像縮放演算法。它適用於元素本身,適用於元素其他屬性中的圖像,也應用於子元素。

『捌』 前端性能優化什麼意思

如果前端優化得好,他不僅可以為企業節約成本,他還能給用戶帶來更多的用戶,因為增強的用戶體驗。說了這么多,那麼我們應該如何對我們前端的頁面進行性能優化呢?一般說來,web前端指網站業務邏輯之前的部分,包括瀏覽器載入、網站視圖模型、圖片服務、CDN服務等,主要優化手段有瀏覽器訪問、使用反向代理才、CDN等。

『玖』 web前端網站性能優化怎麼優化引用文件位置

有一些插件需要引用到遠程的圖片、CSS、JS、圖標等,如果遠程的資源連接網速不佳,如國外的某些資源,會造成網頁阻塞,同樣也會造成頁面展示問題,盡量能把引用遠程的資源能本地化。推薦你去三人行慕課上學習,比較全面