高性能ウェブサイトの最適化ガイド

高性能ウェブサイトの最適化ガイド

パフォーマンスの黄金律:

エンドユーザーの応答時間のわずか 10% ~ 20% が HTML ドキュメントのダウンロードに費やされます。残りの 80% ~ 90% の時間は、ページ上のすべてのコンポーネントのダウンロードに費やされます。

ルール1: HTTPリクエストを減らす

これは、イメージ マップ、CSS スプライト (長所と短所の両方)、インライン イメージ (data: URL モード、IE ではサポートされておらず、キャッシュできません)、およびスクリプトとスタイル シートのマージを使用することで実現できます。

ルール2: コンテンツ配信ネットワークを使用する

アプリケーション Web サーバーがユーザーに近いほど、HTTP 要求の応答時間が短縮されます。
コンポーネント Web サーバーがユーザーに近いほど、複数の HTTP 要求に対する応答時間が短縮されます。
コンテンツ配信ネットワーク (CDN) は、複数の地理的な場所に分散された Web サーバーのグループであり、ユーザーにコンテンツをより効率的に配信するために使用されます。

ルール3: Expiresヘッダーを追加する

Expires ヘッダーは、Web サーバーが Web クライアントに、指定された時間までコンポーネントの現在のコピーを使用できることを通知するために使用されます。サーバーとクライアントのクロックが厳密に同期され、期限が切れた後にサーバー構成で新しい日付が提供される必要があります。
Max-Age と mod_expires は、Expires の欠点を補うことができます。

ルール4: コンポーネントを圧縮する

HTTP 1.1から、

ルール5: スタイルシートを先頭に置く

白画面を避けるためのプログレッシブプレゼンテーション

ルール6: スクリプトを一番下に置く

HTTP 1.1 仕様では、ブラウザが各ホスト名から 2 つのコンポーネントを並行してダウンロードすることを推奨しており、スクリプトをダウンロードするときには並行ダウンロードは実際には無効になっています。
理由の 1 つは、スクリプトが document.write を使用してページ コンテンツを変更する可能性があるため、ブラウザーはページが適切にレイアウトされることを確認するまで待機することです。
2 つ目の理由は、スクリプトが正しい順序で実行されるようにするためです。複数のスクリプトが並行してダウンロードされると、応答が特定の順序でブラウザーに到着するという保証はありません。
スクリプトを先頭に配置すると、それに続くコンテンツのレンダリングがブロックされ、それに続くコンポーネントのダウンロードがブロックされます。

ルール7: CSS式を避ける

この式メソッドは他のブラウザでは無視されますが、IE では便利なツールです。 IE でプロパティを設定して、ブラウザー間で一貫したエクスペリエンスを作成する機能。たとえば、IE [IE6、IE7 (Quirk)、IE8 (Quirk]] は min-width プロパティをサポートしていません。この問題は、次の式メソッドを使用して解決できます。

コードをコピー
コードは次のとおりです。

幅: 式(document.body.clientwidth<600?"600px": "auto");
最小幅: 600px;

式の問題は、望んでいるよりも頻繁に評価されることです。これらは、ページがレンダリングされ、サイズが変更されるときだけでなく、ページがスクロールされたときや、ユーザーがページ上でマウスを移動したときにも評価されます。追跡するために、CSS 式にカウンターを追加できます。
式カウンターの例:
http://stevesouders.com/hpws/expression-counter.php


コードをコピー
コードは次のとおりです。

P {
幅: 式(setCntr(),document.body.clientwidth<600?"600px": "auto");
最小幅: 600px;
}

式の代替: イベント ハンドラー
onresize イベントでスタイルの width プロパティを設定することで、min-width の問題を修正します。
イベント ハンドラーの例:
イベントハンドラ
この例では、setMinWidth() 関数を使用して、ブラウザのサイズが変更されたときにすべての段落要素のサイズを変更します。

コードをコピー
コードは次のとおりです。

関数setMinWidth(){
setCntr(); //評価の数を表示するために使用される
var aElements = document.getElementsByTagName("p");
for(var i=0;i&lt;aElements.length;i++){
aElements[i].runtimeStyle.width=(document.body.clientwidth<600?"600px": "自動");
}
}
if(1!=navigator.userAgent.indexOf("MSIE")){
ウィンドウの最小幅を設定します。
}

これにより、ブラウザのサイズが変更されると幅が動的に設定されますが、最初にレンダリングされるときに段落のサイズが適切に設定されないため、ページでは「1 回限りの式」を使用して初期幅を設定する必要もあります。

ルール8: 外部のJavaScriptとCSSを使用する

ルール9: DNSルックアップを減らす

ルール10: JavaScriptを小さく保つ

合理化 vs. 難読化 vs. 圧縮

ルール11: リダイレクトを避ける

Web サーバーがブラウザーにリダイレクトを送信すると、応答には 3xx 範囲のステータス コードが含まれます。これは、ユーザー エージェントが要求を完了するためにさらにアクションを実行する必要があることを示します。

リダイレクトは HTML ドキュメントのダウンロードに影響します。

ルール12: 重複したスクリプトを削除する

ルール13: ETagを構成する

ルール 14: Ajax をキャッシュ可能にする

最後に、この本の内容の概要をご紹介します。

<<:  mysql5.6 マスタースレーブ設定と非同期の問題の詳細な説明

>>:  HTML 基本コントロール入門_PowerNode Java アカデミー

推薦する

MySQL がデフォルトの分離レベルとして繰り返し読み取りを選択する理由

目次Oracle 分離​​レベルMySQL 分離レベル要約する多くの読者は、MySQL のトランザク...

MySQL ユーザー変数と set ステートメントの例の詳細な説明

目次1 ユーザー変数の概要2 ユーザー変数の定義3 ユーザー変数の使用3.1 セットを通した例3.2...

Docker Swarm サービス オーケストレーション コマンドの詳細な説明

1. はじめにDocker には、タスクを構成する複数の Docker コンテナをオーケストレーショ...

負の距離(共感) - 相互影響の反復プロセス

ネガティブな距離は共感を意味します。序文(疑問の提起):プロダクトマネージャーは機能を把握します。機...

MySQL のレイテンシ問題とデータフラッシュ戦略プロセスの分析

目次1. MySQLレプリケーションプロセス2. MySQLの遅延問題の分析3. プロモーション期間...

JavaScript は setTimeout を使用してカウントダウン効果を実現します

JavaScript ネイティブ コードの記述能力を高め、setTimeout() の使用を強化する...

プロキシはVue3データの双方向バインディングの原理を実現します

目次1. proxy と Object.defineProperty の利点2. プロキシ監視オブジ...

Linux に MySQL をインストールする方法 (yum とソース コードのコンパイル)

Linux に MySQL をインストールするには、yum インストールとソース コード コンパイ...

Vue の一般的な問題と解決策の概要 (推奨)

Vue に限定されず、他の種類の SPA プロジェクトにも当てはまる問題がいくつかあります。 1....

Linux にソフトウェアをインストールするときにソフトウェア パッケージが存在しない問題を解決する方法

ソフトウェア パッケージが存在しない場合は、インストールされているソフトウェアのソフトウェア ソース...

大規模なデータテーブルのコピー効率を向上させるMySQLソリューション

序文この記事では主に、MySQL で大規模なデータ テーブルのコピーの効率を向上させることに関する関...

フロントエンドブラウザのフォントサイズが12px未満のソリューション

序文最近プロジェクトに取り組んでいたとき、UI デザインのフォント サイズは 10 ピクセルでした。...

VueのSSRサーバーサイドレンダリング例の詳細な説明

サーバーサイドレンダリング (SSR) を使用する理由検索エンジンのクローラーが完全にレンダリングさ...

Linux で同じバージョンの R を使用して Seurat2 と Seurat3 を同時にインストールするチュートリアル

Seurat は、単一細胞解析用の重量級の R パッケージです。使用したことがある人なら誰でも、その...