1. 程式人生 > >用CSS開啟硬體加速來提高網站效能(轉)

用CSS開啟硬體加速來提高網站效能(轉)

你知道我們可以在瀏覽器中用css開啟硬體加速,使GPU (Graphics Processing Unit) 發揮功能,從而提升效能嗎?

現在大多數電腦的顯示卡都支援硬體加速。鑑於此,我們可以發揮GPU的力量,從而使我們的網站或應用表現的更為流暢。

在桌面端和移動端用CSS開啟硬體加速

CSS animations, transforms 以及 transitions 不會自動開啟GPU加速,而是由瀏覽器的緩慢的軟體渲染引擎來執行。那我們怎樣才可以切換到GPU模式呢,很多瀏覽器提供了某些觸發的CSS規則。

現在,像Chrome, FireFox, Safari, IE9+和最新版本的Opera都支援硬體加速,當它們檢測到頁面中某個DOM元素應用了某些CSS規則時就會開啟,最顯著的特徵的元素的3D變換。

例如:

.cube {
   -webkit-transform: translate3d(250px,250px,250px)
   rotate3d(250px,250px,250px,-120deg)
   scale3d(0.5, 0.5, 0.5);
}

可是在一些情況下,我們並不需要對元素應用3D變換的效果,那怎麼辦呢?這時候我們可以使用個小技巧“欺騙”瀏覽器來開啟硬體加速。

雖然我們可能不想對元素應用3D變換,可我們一樣可以開啟3D引擎。例如我們可以用transform: translateZ(0); 來開啟硬體加速 。

.cube {
   -webkit-transform: translateZ(0);
   -moz-transform: translateZ(0);
   -ms-transform: translateZ(0);
   -o-transform: translateZ(0);
   transform: translateZ(0);
   /* Other transform properties here */
}

在 Chrome and Safari中,當我們使用CSS transforms 或者 animations時可能會有頁面閃爍的效果,下面的程式碼可以修復此情況:

.cube {
   -webkit-backface-visibility: hidden;
   -moz-backface-visibility: hidden;
   -ms-backface-visibility: hidden;
   backface-visibility: hidden;

   -webkit-perspective: 1000;
   -moz-perspective: 1000;
   -ms-perspective: 1000;
   perspective: 1000;
   /* Other transform properties here */
}

在webkit核心的瀏覽器中,另一個行之有效的方法是

.cube {
   -webkit-transform: translate3d(0, 0, 0);
   -moz-transform: translate3d(0, 0, 0);
   -ms-transform: translate3d(0, 0, 0);
   transform: translate3d(0, 0, 0);
  /* Other transform properties here */
}

原生的移動端應用(Native mobile applications)總是可以很好的運用GPU,這是為什麼它比網頁應用(Web apps)表現更好的原因。硬體加速在移動端尤其有用,因為它可以有效的減少資源的利用(麥時注:移動端本身資源有限)。

總結

只對我們需要實現動畫效果的元素應用以上方法,如果僅僅為了開啟硬體加速而隨便亂用,那是不明智的。

小心使用這些方法,如果通過你的測試,結果確是提高了效能,你才可以使用這些方法。使用GPU可能會導致嚴重的效能問題,因為它增加了記憶體的使用,而且它會減少移動端裝置的電池壽命。

你有在專案中使用過這些方法嗎?如果有,請分享你的精彩案例吧。

相關推薦

CSS開啟硬體加速提高網站效能 CSS開啟硬體加速提高網站效能

用CSS開啟硬體加速來提高網站效能(轉) 翻譯文章,原文地址:http://blog.teamtreehouse.com/increase-your-sites-performance-with-hardware-accelerated-css。 你知道我們可以在瀏覽器中用css開啟硬體加速,使G

CSS開啟硬體加速提高網站效能

你知道我們可以在瀏覽器中用css開啟硬體加速,使GPU (Graphics Processing Unit) 發揮功能,從而提升效能嗎? 現在大多數電腦的顯示卡都支援硬體加速。鑑於此,我們可以發揮GPU的力量,從而使我們的網站或應用表現的更為流暢。 在桌面端和移動端用CSS開啟硬體加速 CSS an

CSS開啟硬體加速提高網站效能

國外一篇文章,有點意思,轉載過來,準備嘗試下~ 你知道我們可以在瀏覽器中用css開啟硬體加速,使GPU (Graphics Processing Unit) 發揮功能,從而提升效能嗎? 現在大多數電腦的顯示卡都支援硬體加速。鑑於此,我們可以發揮GPU的力量,從而使我們的網站或應用表現的更為流暢

SpringBoot2使用Undertow提高應用效能spring-boot-starter-undertow

Undertow Undertow是一個Java開發的靈活的高效能Web伺服器,提供包括阻塞和基於NIO的非阻塞機制。Undertow是紅帽公司的開源產品,是Wildfly預設的Web伺服器。 SpringBoot2中可以將Web伺服器切換到Undertow來提高應用效能。 Un

css背景圖片位置:background的position

osi ack post 前景 相對 right 並且 back top position的兩個參數:水平方向的位置,垂直方向的位置----------該位置是指背景圖片相對於前景對象的1.background:url(../image/header.jpg) n

域名做CDN通過隱藏服務器真實IP的方法防止DDoS攻擊

send 什麽 前端 內容 高防 解析 代理 信息 子域 隱藏服務器真實IP是解決問題最好和最快的方法,但只針對小流量,大流量同樣會扛不住。 服務器前端加CDN中轉,比如阿裏雲、百度雲加速、360網站衛士、加速樂、安全寶等,如果資金充裕的話,可以購買高防的盾機,用於隱

如何優化JAVA代碼及提高執行效率

car jdk nts 外部 ast 兩種 泛型 copy app 可供程序利用的資源(內存、CPU時間、網絡帶寬等)是有限的,優化的目的就是讓程序用盡可能少的資源完成預定的任務。優化通常包含兩方面的內容:減小代碼的體積,提高代碼的運行效率。本文討論的主要是如何提高代碼的效

OpenCV實現目標追蹤的八種方法

原文地址:http://m.elecfans.com/article/722414.html 編者按:目標跟蹤作為機器學習的一個重要分支,加之其在日常生活、軍事行動中的廣泛應用,很多國內外學者都對此頗有研究。本文將討論OpenCV上八種不同的目標追蹤演算法。

利用Math.Random()方法生成隨機數。

 在Java語言中生成隨 機數相對來說比較簡單,因為有一個現成的方法可以使用。在Math類中,Java語言提供了一個叫做random的方法。通過這個方法可以讓系統產生隨機 數。不過預設情況下,其產生的隨機數範圍比較小,為大於等於0到小於1的double型隨機數。雖然其隨機數產生的範圍比較小,不能夠滿足日常的需

javapoi實現對word讀取和修改操作

java程式設計要實現對word的操作沒有vb那種程式語言來得容易,得藉助一些開源元件,其中就包括jacob、poi等, 而poi應用得最為廣泛,對word2003和2007的讀和寫word操作都十分方便。它是Apache組織的一個專案,早在2001年就已經發布了第 一個版本,可以說是apache組織的一

css 文字和div垂直居中方法彙總

link:https://blog.csdn.net/u014607184/article/details/51820508在樣式佈局中,我們經常碰到需要將元素居中。通過css實現元素的水平居中較為簡單:對文字,只需要對其父級元素設定text-align: center;,而

JAVA8-lamda表示式和增強版Comparator進行排序

以前的排序一般物件實現Comparable或者Comparator介面,經常是通過匿名類類實現。 可以參見以前的博文 Java 中 Comparable 和 Comparator 比較 現在看看使用lamda表示式和java8中增強的Comparator介面進行排序。

【譯】CSS屬性選擇器拼接HTML的DNA

原文連結:www.smashingmagazine.com/2018/10/att… CSS屬性選擇器非常神奇,它們可以幫你避免新增數不勝數的類名,從另一方面來指出你程式碼裡的一些問題。但是大家不用慌,雖然屬性選擇器複雜且強大,但是很易於學習和使用。在這篇文章,我們將討論它們是如何執行起來的,再教大家

開啟硬體加速 導致花屏問題 OpenGlRenderer 0x506 解決辦法

(150114_17:08:32.461)I/dalvikvm-heap( 850): Grow heap (frag case) to 10.342MB for 2457616-byte allocation (150114_17:08:32.542)D/dalvik

關於修改虛擬機器記憶體,和開啟硬體加速

昨晚回覆了一個帖子,內容比較經典,所以特開一貼,大家可以研究一下! 主要是機子裡的關於系統性能的2個引數: 1.  debug.sf.hw=0,修改為debug.sf.hw=1,此步驟為開啟硬體加速 2.  dalvik.vm.heapsize=24m,修改為dalvik

Webview在RecyclerView中開啟硬體加速閃屏問題解決

在專案中遇到一個問題:把Webview作為header加在Recyclerview中,開啟硬體加速後,錘子手機閃屏嚴重,其他手機有閃屏,不算嚴重。但是關閉硬體加速網頁會很卡,一直對於硬體加速閃屏問題不知怎麼解決,嘗試直接關閉Webview的硬體加速,但出現白

提高網站效能的常見方法

一.Web前端效能優化 一般來說Web前端指網站業務邏輯之前的部分,包括瀏覽器載入,網站檢視模型,圖片服務,CDN服務等,主要優化手段有優化瀏覽器訪問,使用反向代理,CDN等。 1..瀏覽器訪問優化 (1)減少http請求 HTTP協議是無狀態的應用層協議,意味著每次HTTP請求都需要簡歷通訊鏈路,

python實現機器學習:線性迴歸linear regression

需要下載一個data:auto-mpg.data 第一步:顯示資料集圖 import pandas as pd import matplotlib.pyplot as plt columns = ["mpg","cylinders","displacement","horsepowe

redis可以做什麼?

redis可以用來做什麼?以部落格帖子為例大概說說,當然redis的其他功能還有很多,後續在做介紹。 Redis 是網際網路技術領域使用最為廣泛的儲存中介軟體,它是「Remote Dictionary Service」的首字母縮寫,也就是「遠端字典服務」。 記錄帖子的點贊數、評論數和點選數 (hash)

使用ViewStub提高載入效能吧!

什麼是ViewStub? ViewStub其實本質上也是一個View,其繼承關係如圖所示: 為什麼ViewStub可以提高載入效能? ViewStub使用的是惰性載入的方式,即使將其放置於佈局檔案中,如果沒有進行載入那就為空,不像其它控制元件一樣只