2016-08-21 分類: 網站建設
在我們的項目中,我們每天都會和設計師和產品負責人討論關于平衡美觀和性能的問題。對于我們自己的網站,這樣做是很簡單的。簡言之,我們認為好的用戶體驗從快速的內容傳輸開始,也就意味著 性能 > 美觀
。
好的內容、布局、圖片和交互是吸引用戶的重要因素。這每個因素都會影響頁面的加載時間和終端用戶體驗。每一步我們都在探討如何在獲得好的用戶體驗和保證設計美感的同時,最小化對性能的影響。
我們想要把核心內容盡快地呈現給用戶,意味著我們要處理好基本的 HTML 和 CSS。每個頁面都應該達到基本的目的:傳遞信息。JS、CSS、網頁字體、圖片、網站分析等優化都是位居于核心內容之下的。
給理想網站定義了標準后,我們總結出:要想達到預期效果,就要能對網站各方面的控制都游刃有余。我們選擇構建自己的靜態站點生成器,包括資源傳輸,并且由我們自己操控。
我們使用 作為那些不支持
或者 JS 的瀏覽器的后備元素。使用圖片的大實例確保了它在后備方案中的可行性。
盡管圖片傳輸方式已經確定了,我們仍需要思考該怎樣有效地執行。我喜歡
元素的功能,但不喜歡寫上面那些代碼段,尤其是寫內容時必須把它加進去。我們不想做這么費力的事情:每張圖片都要寫6
個實例,所以優化這些圖片并且把它們寫在markdown文件的
里面。所以:
在構建過程中,原圖片的多個實例,包括JPG, PNG和WebP格式,我們使用gulp responsive
來生成。
在markdown文件中寫[圖片描述](image.jpg)
.在構建過程中使用自定義Markdown渲染器來為已經完全成熟的
元素編譯傳統的markdown圖片聲明。
我們為自己的網站選擇了特定的圖標類型,其中SVG插圖占了主要地位。這樣做有以下幾個原因:
首先,SVG的圖片比位圖更小;
其二,SVG圖片本身就是響應式的,有很棒的伸縮性, 所以不需要圖片生成及
元素;
最后也是很重要的一點,就是我們可以通過CSS來不斷改變它,賦予它新的活力!我們所有的組合頁面都有一個自定義的動態SVG圖, 可以被概述頁面所復用。這張圖片作為我們所有組合頁面的一種循環風格,使得頁面設計一體化,同時又幾乎不會對性能造成影響。請看這張動畫,看看我們是如何用CSS來改變它的。
在深入之前,這里有一個關于在瀏覽器設置自定義字體的簡短介紹。當瀏覽器發現CSS里面有 @font-face
的定義,但是用戶的電腦并不支持該字體時,它會嘗試下載該字體文件。在下載時,多數瀏覽器根本不會用這種字體來展示文本。這種現象稱為“不可見文本的閃現” 或者FOIT
。如果你有留意,你會發現網頁上都有這種情況存在。如果你問我,我會告訴你這會影響用戶體驗。它延遲了用戶讀取他們所需內容的時間。我們可以迫使瀏覽器改變這種行為,變成 “無樣式內容閃現” 或者稱為FOUT
。我們告訴瀏覽器先使用普通字體,像 Arial 或者 Georgia。當自定義的字體下載完成后,再代替標準字體并且重新渲染。這樣,即使自定義字體下載失敗,仍然不會影響內容的可讀性。然而,有人會認為這是一種妥協的做法,但我們認為自定義字體只是一種優化。盡管沒有自定義字體,網頁看起來也完好,也能百分百的正常運行。勾選/不勾選復選框來切換我們的網頁字體,來自己體驗一下:
切換下載的字體類 使用自定義網頁字體可以改善我們的用戶體驗,只要你能夠優化他們,并且負責任地為之服務。
到目前為止,子集設定是改善網頁字體性能最快的方式。我將會向每個使用自定義字體的網頁開發者推薦它。如果你能完全控制網頁內容,并且知道它將要展示哪些特性的話,你可以完全使用子集設定。但是,即使是僅僅把字體設為西方語言,也會對文件大小造成很大的影響。例如,我們的Noto Regular WOFF
字體,默認是246KB,將其設為西方語言后,大小下降到31KB。我們使用Font squirrel webfont
, 這種字體真的很易用。
Bram Stein 推出的字體監聽器是一個很了不起的腳本,可以幫助檢查字體是否已被加載。至于你是如何加載字體的,是通過一個網頁字體服務,還是自己上傳就不可知了。在這個監聽器告訴我們所有自定義的字體已經下載完畢后,我們就可以在
元素上添加一個字體加載完畢的類,我們的頁面就會重新用新的字體:
html{font-family:Georgia,serif; }html.fonts-loaded{font- family : Noto, Georgia,serif; }
注意: 為了簡短,我沒有給上面CSS中的Noto
加上@font-face
的聲明。
我們可以設定一個cookie來記住所有的字體已經被加載過,就可以讓他們緩存在瀏覽器里面了。我們使用這個cookie來做重復的瀏覽,這個我后續會解釋。
在不久的將來,我們或許不需要 Bram Stein 的腳本來監聽這個行為。CSS開發團隊已經提案一個新的@font-face
描述器,也叫font-display
。它的屬性值控制著一個可下載的字體是如何在還沒加載出來時就渲染頁面的。這是CSS對 font-display
的描述:它將帶給我們像上面方法一樣的行為效果。你可以讀讀更多關于font-display
的屬性。
一般來講,我們都是盡可能快的加載需要的資源。我們移除一些堵塞的請求來加快頁面渲染,優化首屏,用瀏覽器緩存來處理重復的頁面。
設計上,我們的網站并沒有很多JS。我們發展了一個JavaScript工作流來處理我們目前已有的js, 以及未來會用到的js資源。
JS在
塊里面渲染,這是我們想要的。JS應該只是用來提高用戶體驗,不應該是訪問者需要的關鍵。處理JS堵塞渲染的簡單方法就是把腳本放在頁面的尾部。這樣網頁就會在整個HTML 渲染完畢后才去加載JS。
另一種可以把腳本放在head
執行的方案是在
我們把這小段腳本放在頁面頭部,來檢測瀏覽器是否支持原生JavaScript的 document.querySelector
和window.addEventListener
屬性。如果支持,我們通過
當前名稱:成都網站建設如何運用最新的技術提升網頁速度和性能
分享路徑:http://m.newbst.com/news/42117.html
網站建設、網絡推廣公司-創新互聯,是專注品牌與效果的網站制作,網絡營銷seo公司;服務項目有網站建設等
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯
猜你還喜歡下面的內容