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

来源:https://www.cnblogs.com/demon-gu/archive/2019/01/10/10247675.html
-Advertisement-
Play Games

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


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

翻譯文章,原文地址:http://blog.teamtreehouse.com/increase-your-sites-performance-with-hardware-accelerated-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可能會導致嚴重的性能問題,因為它增加了記憶體的使用,而且它會減少移動端設備的電池壽命。


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

-Advertisement-
Play Games
更多相關文章
  • public class GZIP { /** * 字元串的壓縮 * * @param str * 待壓縮的字元串 * @return 返回壓縮後的字元串 * @throws IOException */ public static String compress(String str)... ...
  • 一、代碼——命令行模式 //main.m block(20, 30); 分析:以下代碼的前提,因為我們知道block底層的構造就是上述結構體的構造,橋接的目的就是展示這樣的結構體內部是怎樣的; 二、調試 //lldb模式 1)第一個斷點 2)第二個斷點 3)轉入彙編 4)彙編界面 分析: 1)我們發 ...
  • 描述:剛開始遇到這個問題我一步一步去排除,最後發現在初始化地圖的時候,代碼混淆就有問題了, 問題描述:當跳顯示地圖的頁面APP閃退, 解決對比: 1:對於老版本百度sdk:代碼混淆時語句: -libraryjars libs/baidumapapi_v3_3_0.jar -libraryjars l ...
  • 本文內容搬運自公眾號 原文鏈接 本文主要內容:面向對象 預計閱讀時間:6分鐘 面向對象的方式 單例模式(字面量定義) var obj = {} 類的實例 var obj = new Object() 工廠創建 構造函數 扮演了三種角色,(普通函數、普通對象、類) 單例模式(字面量定義) var ob ...
  • 從我們輸入URL並按下回車鍵到看到網頁結果之間發生了什麼?換句話說,一張網頁,要經歷怎樣的過程,才能抵達用戶面前?下麵來從一些細節上面嘗試一下探尋裡面的秘密。 前言:鍵盤與硬體中斷 說到輸入URL,當然是從手敲鍵盤開始。對於鍵盤,生活中用到的最常見的鍵盤有兩種:薄膜鍵盤、機械鍵盤。 薄膜鍵盤:由面板 ...
  • 每年 Codepen 都會公佈年度最熱門的代碼片段,這些片段有的技術超弦,有的超實用、有的超有創意,有空看看都能給我們帶來靈感。 同時從 Codepen 的代碼上也能學習一些牛人的寫法,不管是設[……] https://codepen.io/2016/popular/pens/ ...
  • ::-Webkit-Input-Placeholder input 的 H5 placeholder 屬性,很好用,但不能直接改這個文字顏色,所以目前的解決方法就是用::input-placeholder屬性來改。 配合 opacity 屬性使用效果更好 Outline 當點擊Input元素時顯示的 ...
  • 兩個參數: border-box和content-box 在此不難發現兩個框不同,.border-box那個計算方式為 80(隨著內邊距和邊框的增加而減少) + 10 * 2 (內邊距兩邊)= 100 (不變), 無論內邊距(10)和邊框(忘了加了)怎麼變,它們相加的結果始終等於自己設置的寬度(10 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...