目次
フォントの最初の描画のパフォーマンスが問題であり、それらはリソースをブロックしており、フォントのダウンロード時に適用されているテキストが非表示になります。上記の例の非ブロッキング リンクを使用すると、表面のレンダリングをブロックせずに、フォント データを含むスタイルシートをバックグラウンドでダウンロードできます:
概要
ホームページ ウェブフロントエンド htmlチュートリアル CSS の読み込みはページ rendering_html/css_WEB-ITnose には影響しません

CSS の読み込みはページ rendering_html/css_WEB-ITnose には影響しません

Jun 24, 2016 am 11:43 AM

ページのレンダリングに影響を与えずに CSS を読み込む

この記事では、スタイル シートを非同期的にダウンロードして、スタイル シートのダウンロードがページのレンダリングをブロックしないようにして、訪問者ができるだけ早く情報コンテンツを取得できるようにする手法を示します。

警告! 私は善意でこれを投稿していますが、これを読んだ人に以下で遭遇する問題を知らせる責任はありません。コミュニティからはすぐに多くのフィードバックが寄せられました (いくつかのフィードバックには感謝しています)。そして、このテクノロジーが私が期待していたほど安定していないことがますます明らかになり、テストと活用に成功した私とは異なり、多くの開発者が IE と Firefox で問題を経験していましたが (Chrome と Safari で F F テストがクラッシュしました)、他の開発者は での成功を報告しました。クロムとサファリ。今の私のアドバイスは、製品には使用しないことです。このフィードバックに対処し、関連情報を含めてこの記事を更新する予定です。

これらのテクニックの背後にある原理は新しいものではありません。たとえば、Filament 技術チームは CSS とフォントのロードに関する多くのコンテンツを公開しています。この記事は、ノンブロッキング リソースのロードに関する私の考えと意見を記録するために書きました。

非同期スタイルのダウンロードをトリガーするコツは、 要素を使用し、media 属性に使用できない値を設定することです (ここでは media="none" を使用しましたが、他の値も使用できます)。メディア クエリが false と評価された場合でも、ブラウザはスタイル シートをダウンロードしますが、ページをレンダリングする前にスタイル シート リソースが利用可能になるのを待ちません。

<link rel="stylesheet" href="css.css" media="none">
ログイン後にコピー

スタイル シートをダウンロードしたら、スタイル ルールを HTML ドキュメントに適用できるように、メディア属性を使用可能な値に設定する必要があります。onload イベントを使用してメディア属性を all に切り替えることができます。

<link rel="stylesheet" href="css.css" media="none" onload="if(media!='all')media='all'">
ログイン後にコピー

この CSS 読み込み方法は、標準的な方法よりもはるかに速く、訪問者に有益な情報を提供します。重要な CSS は通常のブロック方法で読み込むことができます (または、究極のパフォーマンスを得るためにインラインで処理することもできます)。一方、重要でないスタイルは、解析/レンダリング プロセス中にゆっくりとダウンロードしてレンダリングでき、後の段階で適用されます。

この手法では JavaScript を使用しますが、JavaScript を実行できないブラウザを処理するために、同等のブロック 要素を

フォントを読み込むには非ブロッキング CSS を使用してください

フォントの最初の描画のパフォーマンスが問題であり、それらはリソースをブロックしており、フォントのダウンロード時に適用されているテキストが非表示になります。上記の例の非ブロッキング リンクを使用すると、表面のレンダリングをブロックせずに、フォント データを含むスタイルシートをバックグラウンドでダウンロードできます:

<link rel="stylesheet" href="css.css" media="none" onload="if(media!='all')media='all'">
ログイン後にコピー

font.css には、Merriweather フォントの Base64 でエンコードされた WOFF バージョンが含まれています。

<link rel="stylesheet" href="main.css"><link rel="stylesheet" href="font.css" media="none" onload="if(media!='all')media='all'">
ログイン後にコピー

main.css には、サイトに適用する必要があるすべてのスタイル ルールが含まれています。フォント宣言は次のとおりです:

@font-face {  font-family: Merriweather;  font-style: normal;  font-weight: 400;  src: local('Merriweather'), url('data:application/x-font-woff;charset=utf-8;base64,...')}
ログイン後にコピー

フォントのダウンロード中、最初に一致したフォールバック フォント (この場合は

Lucida Grande

) がページのコンテンツのレンダリングに使用されます。 フォント スタイルシートが適用されると、Merriweather が使用され、避けられないリフローが可能な限り目立たないよう、フォールバック フォントが優先フォントと同様のレイアウト特性を共有するように努めます。 Chrome の Google アナリティクス デバッガー サイトを使用して、シミュレートされた 3G ネットワーク接続でブロッキングと非ブロッキングをテストしました。ローカル テストでは、以下に示すネットワーク グラフが生成されました。DOMContentLoaded が 450 ミリ秒早くトリガーされ、ノンブロッキング テクノロジーを使用した後はリソースのダウンロードが速くなっていることに注意してください。

3G ネットワークをシミュレートするグラフ。ブロックされたフォントが上部に表示されます。下部にはノンブロッキング フォントが表示されます。

これをテスト サーバーにデプロイし、3G 接続で webpagetest コンストラクトを実行すると、次のタイムラインが生成されます:

3G タイムライン。ブロッキング フォントは上部に表示され、非ブロッキング フォントは下部に表示されます。

どちらの方法もページを完全にレンダリングするのに 2.8 秒かかりましたが、非ブロック方法は通常のブロック方法よりも 1 秒早く描画されました。メイン スタイルシートをインラインで使用して同じテストを実行すると、フォントの処理にノンブロッキング CSS が適用されている場合に 0.7 秒の時間的利点が示されます:

メイン CSS コンテンツの 3G タイムライン。ブロッキング フォントを上部に表示し、非ブロッキング フォントを下部に表示します。

このテクニックはフォントに対して非常にうまく機能しますが、フォントの読み込みをより細かく制御できる新しい CSS フォント読み込みモジュールにも注目することをお勧めします。

概要

フォントの読み込みはノンブロッキング技術を適用する例ですが、JavaScript 拡張スタイルをコア CSS から分離するなど、他の目的にも使用できます。

私は、スタイルをフレーム (コア レイアウト) とプレゼンテーション (その他すべて) に分割するというアイデアの実験を開始しました。これにより、表示されるスタイル データがしばらく遅延する一方で、重要なページ レイアウトがページ レンダリングをブロックできるようになります。

この記事のアドレス: http://www.oschina.net/translate/loading-css-without-blocking-render

元のアドレス: http://keithclark.co.uk/articles/loading-css- -blocking-render なし /

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

公式アカウントのキャッシュの更新の難しさ:バージョンの更新後のユーザーエクスペリエンスに影響を与える古いキャッシュを回避する方法は? 公式アカウントのキャッシュの更新の難しさ:バージョンの更新後のユーザーエクスペリエンスに影響を与える古いキャッシュを回避する方法は? Mar 04, 2025 pm 12:32 PM

公式アカウントのWebページはキャッシュを更新します。これはシンプルでシンプルで、ポットを飲むのに十分な複雑です。あなたは公式のアカウントの記事を更新するために一生懸命働きましたが、ユーザーはまだ古いバージョンを開くことができますか?この記事では、この背後にあるtwist余曲折と、この問題を優雅に解決する方法を見てみましょう。それを読んだ後、さまざまなキャッシュの問題に簡単に対処でき、ユーザーが常に新鮮なコンテンツを体験できるようになります。最初に基本について話しましょう。それを率直に言うと、アクセス速度を向上させるために、ブラウザまたはサーバーはいくつかの静的リソース(写真、CSS、JSなど)やページコンテンツを保存します。次回アクセスするときは、もう一度ダウンロードすることなく、キャッシュから直接検索できます。自然に高速です。しかし、このことは両刃の剣でもあります。新しいバージョンはオンラインです、

HTML5フォーム検証属性を使用してユーザー入力を検証するにはどうすればよいですか? HTML5フォーム検証属性を使用してユーザー入力を検証するにはどうすればよいですか? Mar 17, 2025 pm 12:27 PM

この記事では、ブラウザのユーザー入力を直接検証するために、必要、パターン、MIN、MAX、および長さの制限などのHTML5フォーム検証属性を使用して説明します。

WebページのPNG画像にストローク効果を効率的に追加する方法は? WebページのPNG画像にストローク効果を効率的に追加する方法は? Mar 04, 2025 pm 02:39 PM

この記事では、CSSを使用したWebページへの効率的なPNG境界追加を示しています。 CSSはJavaScriptやライブラリと比較して優れたパフォーマンスを提供し、微妙または顕著な効果のために境界幅、スタイル、色を調整する方法を詳述していると主張しています

HTML5のクロスブラウザー互換性のベストプラクティスは何ですか? HTML5のクロスブラウザー互換性のベストプラクティスは何ですか? Mar 17, 2025 pm 12:20 PM

記事では、HTML5クロスブラウザーの互換性を確保するためのベストプラクティスについて説明し、機能検出、プログレッシブエンハンスメント、およびテスト方法に焦点を当てています。

&lt; datalist&gt;の目的は何ですか 要素? &lt; datalist&gt;の目的は何ですか 要素? Mar 21, 2025 pm 12:33 PM

この記事では、HTML&lt; Datalist&GT;について説明します。オートコンプリートの提案を提供し、ユーザーエクスペリエンスの改善、エラーの削減によりフォームを強化する要素。

&lt; Progress&gt;の目的は何ですか 要素? &lt; Progress&gt;の目的は何ですか 要素? Mar 21, 2025 pm 12:34 PM

この記事では、HTML&lt; Progress&gt;について説明します。要素、その目的、スタイリング、および&lt; meter&gt;との違い要素。主な焦点は、&lt; Progress&gt;を使用することです。タスクの完了と&lt; Meter&gt; statiの場合

HTML5&lt; time&gt;を使用するにはどうすればよいですか 日付と時刻を意味的に表す要素? HTML5&lt; time&gt;を使用するにはどうすればよいですか 日付と時刻を意味的に表す要素? Mar 12, 2025 pm 04:05 PM

この記事では、html5&lt; time&gt;について説明します。セマンティックデート/時刻表現の要素。 人間の読み取り可能なテキストとともに、マシンの読みやすさ(ISO 8601形式)のDateTime属性の重要性を強調し、Accessibilitを増やします

&lt; meter&gt;の目的は何ですか 要素? &lt; meter&gt;の目的は何ですか 要素? Mar 21, 2025 pm 12:35 PM

この記事では、html&lt; meter&gt;について説明します。要素は、範囲内でスカラーまたは分数値を表示するために使用され、Web開発におけるその一般的なアプリケーション。それは差別化&lt; Meter&gt; &lt; Progress&gt;およびex

See all articles