Yahoo Fourteen: Web サイトのフロントエンド Web ページの最適化に関する 14 の原則
ルール1. HTTPリクエストの数を減らす
ルール 2. CDN (コンテンツ配信ネットワーク、コンテンツ配信ネットワーク) を使用する
ルール 3. Expires ヘッダーを追加する
ルール 4. ページ要素を圧縮する
スタイルシートを HEAD セクションに移動するとインターフェースの読み込み速度が向上することがわかり、これによりページ要素を順番に表示できるようになります。
スタイル ファイルと同様に、スクリプト ファイルの場所に注意する必要があります。それらをページの下部に配置して、順番に表示して最大限の並列ダウンロードを実現できるようにする必要があります。 スタイルシートがダウンロードされるまでブラウザは表示をブロックするので、スタイルシートをHEADセクションに置く必要があります。スクリプトの場合、スクリプトの後ろにあるコンテンツの連続表示がブロックされるため、スクリプトをできるだけ下に配置すると、より多くのコンテンツをすばやく表示できます。
このスクリプトによって引き起こされる 2 番目の問題は、並列ダウンロードの数がブロックされることです。 HTTP/1.1 仕様では、ブラウザーがホストごとに並行ダウンロードを 2 つまでにすることを推奨しています。したがって、イメージ ファイルを複数のマシンに配布すると、2 つを超える並列ダウンロードを実現できます。ただし、スクリプト ファイルがダウンロードされるとき、ブラウザは他の並行ダウンロードを開始せず、他のホストからのダウンロードも開始しません。
場合によっては、スクリプトを一番下に移動するのが難しい場合があります。たとえば、スクリプトは document.write メソッドを使用してページ コンテンツを挿入します。ドメインの問題も考えられます。ただし、多くの場合、いくつかの方法があります。
別の方法は、遅延スクリプトを使用することです。 DEFER 属性は、スクリプトに document.write が含まれていないことを示し、ブラウザーに直ちに表示を続けるよう指示します。残念ながら、Firefox は DEFER 属性をサポートしていません。 IE では、スクリプトが遅延する場合がありますが、必ずしも必要なだけ遅延するわけではありません。しかし、別の観点から見ると、スクリプトを遅らせることができる場合は、最下位に配置することができます。
私たちのアプリ:
これまで気づかなかったかもしれませんが、このルールを XCube XUI に実装しました。これにより、ページ アクセスのパフォーマンスがさらに向上すると信じています。
ルール 7. CSS 式を避ける
CSS 式は、CSS プロパティを動的に設定する強力な (そして危険な) 方法です。 IE バージョン 5 以降では、backgourd-color:expression((new Date()).getHours()%2?”#B8D4FF”:”#F08A00”) などの CSS 式がサポートされています。つまり、背景色の切り替えです。毎時 。
CSS 式の問題は、多くの人が望むよりも多くの回数実行されることです。式は、ページが表示されサイズ変更されたときだけでなく、ページがスクロールされたときやマウスがページ上に移動したときも評価されます。
CSS 式の実行回数を減らす 1 つの方法は、初回実行時に式を明示的な値に置き換えるワンショット式を使用することです。動的に設定する必要がある場合は、代わりにイベント ハンドラーを使用できます。 CSS 式を使用する必要がある場合は、CSS 式が何千回も実行され、ページのパフォーマンスに影響を与える可能性があることに注意してください。
私たちのアプリ:
現在、CSSのメンテナンス作業は主にUI担当者が担当しており、この状況を避けるために最善を尽くしています。
ルール8. JavaScriptとCSSを外部ファイルに入れる
上記のパフォーマンス最適化ルールの多くは、外部ファイルに基づいて最適化されます。ここで、JavaScript と CSS は外部ファイルに含めるべきか、それともページ ファイル内に含めるべきかという質問をする必要があります。
現実の世界では、外部ファイルはブラウザによってキャッシュされるため、外部ファイルを使用するとページの表示が高速化されます。 JavaScript と CSS がページに組み込まれている場合、HTTP リクエストの数は減りますが、ページのサイズは増加します。一方、外部ファイルを使用するとブラウザによってキャッシュされるため、HTTP リクエストの数を増やすことなくページ サイズが削減されます。
したがって、一般的に言えば、外部ファイルを使用する方がより現実的な方法です。唯一の例外は、Yahoo! と My Yahoo! などのホームページではインライン方式の方が効果的です。一般に、セッション中は現時点ではホームページへのアクセスが少ないため、インライン方式の方がユーザーの応答時間を短縮できます。
私たちのアプリ:
外国貿易、E-net、K プラン: ext2 コードは優れたガイドを提供します。現在、フロントエンド開発者はクライアント モジュールのカプセル化と再利用に細心の注意を払っており、外部 JS を通じてコードの再利用を改善しようとしています。もちろん、外部リソースを持ち込みすぎないように注意してください。これはルール 1 に違反します。
現在の CSS のカプセル化も優れていますが、主に IE シリーズ向けのソリューションであり、ブラウザーの互換性の問題を簡単に解決するために YAML やブループリントなどの CSS フレームワークの導入を検討できます。
ルール 9. DNS クエリの数を減らす
DNS は、ホスト名と IP アドレスのマッピングに使用されます。通常、解決には 20 ~ 120 ミリ秒かかります。より高いパフォーマンスを実現するために、DNS 解決は通常、ISP または LAN によって維持されるキャッシュ サーバー、ローカル マシンのオペレーティング システム (Windows 上の DNS クライアント サービスなど) のキャッシュ、ブラウザーなどの複数のレベルでキャッシュされます。 IE のデフォルトの DNS キャッシュ時間は 30 分、Firefox のデフォルトのバッファ時間は 1 分です。
ホスト名を減らすとDNSクエリの数を減らすことができますが、並列ダウンロードの数が減る可能性があります。 DNS クエリを回避すると応答時間が短縮される可能性がありますが、並列ダウンロードの数を減らすと応答時間が長くなる可能性があります。実行可能な妥協策は、コンテンツを少なくとも 2 つ、最大 4 つの異なるホスト名に分散することです。
私たちのアプリ:
外国貿易: ブラウザーのダウンロード スレッド数の制限を回避するために、静的リソースに対して複数のドメイン名を有効にしましたが、これはこのルールに違反します。ただし、Windows IE の場合は、DNS キャッシュによってこの問題を軽減できます。
ルール 10. JavaScript コードを最小限に抑える
JavaScript コードを最小限に抑えるとは、JS コード内の不要な文字を削除することを意味し、それによってダウンロード時間を短縮します。人気のある 2 つのツールは、#JSMin と YUI Compressor です。
難読化は、ソース コードを最小限に抑える別の方法です。 minify と同様に、コメントや空白を削除してソース コードのサイズを削減し、コードを難読化することもできます。難読化の一環として、関数名と変数名が短い文字列に置き換えられるため、コードがよりコンパクトになり、読みにくくなり、リバース エンジニアリングが困難になります。 Dojo Compressor (ShrinkSafe) は、最も一般的な難読化ツールです。
最小化は安全で簡単なプロセスですが、難読化はより複雑で問題が発生しやすくなります。米国の上位 10 の Web サイトの調査によると、最小化によりファイルを 21% 削減し、難読化を 25% 削減できます。
外部スクリプト ファイルを最小限に抑えることに加えて、埋め込みスクリプト コードも最小限に抑える必要があります。ルール 4 に従ってスクリプトが送信用に圧縮されている場合でも、スクリプトを最小化するとファイル サイズが 5% 以上削減されます。
私たちのアプリ:
JS 圧縮を直接使用しませんが、ext2、jquery など、使用する多くのコンポーネントはすでにこのルールを実践しています。
ルール 11. リダイレクトを避ける
リダイレクト機能は、次のような 2 つの HTTP ステータス コード 301 および 302 によって完了します。
リーリー
リーリー
リーリー
ブラウザは、Location で指定された URL にリクエストを自動的にリダイレクトします。リダイレクトの主な問題は、ユーザー エクスペリエンスが低下することです。
最もリソースを消費し、頻繁に見落とされやすいリダイレクトの 1 つは、URL の末尾に / がないことです。たとえば、http://astrology.yahoo.com/astrology にアクセスすると http:// にリダイレクトされます。 astrology.yahoo.com/astrology/。 Apache では、この問題は Alias、mod_rewrite、または DirectorySlash によって解決できます。
私たちのアプリ:
経験豊富な SA がこの問題をすでに検討しています。興味のある学生は、オンライン環境の Apache 設定ファイル httpd.conf を参照してください。
ルール12. 重複したスクリプトファイルを削除する
ページに重複した JS スクリプト ファイルを含めると、パフォーマンスに影響します。つまり、不要な HTTP リクエストや追加の JS 実行が作成されます。
IEでは不要なHTTPリクエストが発生しますが、Firefoxでは不要なHTTPリクエストが生成されません。追加の JS の実行は、IE または Firefox のどちらで実行されているかに関係なく発生します。
スクリプト ファイルの重複を避ける 1 つの方法は、テンプレート システムを使用してスクリプト管理モジュールを作成することです。このモジュールは、スクリプト ファイルの重複を防ぐだけでなく、依存関係チェックも実装し、スクリプト ファイル名にバージョン番号を追加するため、有効期限を非常に長くすることができます。
私たちのアプリ:
この問題は Xplatform の古いバージョンでより深刻ですが、XCube の新しいバージョンでは同じ間違いは繰り返さないと私は信じています。
ルール 13. ETag を設定する
ETags は、ブラウザー キャッシュ内の要素が Web サーバー内の要素と一致するかどうかを判断するために使用されるメカニズムであり、最終更新日よりも柔軟な要素検証メカニズムです。 ETag は要素のバージョンを一意に表す文字列であり、引用符で囲む必要があります。 Web サーバーは最初に応答で ETag を指定します:
リーリー
リーリー
リーリー
リーリー
その後、ブラウザは要素を検証する必要がある場合、If-None-Match ヘッダーを使用して ETag を Web サーバーに返します。ETag が一致すると、サーバーは 304 コードを返すため、ダウンロード時間が節約されます。
リーリー
リーリー
リーリー
リーリー
リーリー
ETag の問題は、ETag が Apache1.3 や 2.x などのサーバー固有の属性に基づいて構築され、その形式が inode-size-timestamp であるのに対し、IIS5.0 および 6.0 では形式が Filetimestamp であることです。 :変更番号。このように、異なる Web サーバー上の同じ要素の ETag は異なります。このように、マルチ Web サーバー環境では、ブラウザは最初にサーバー 1 に要素を要求し、次にサーバー 2 で要素を検証します。ETag が異なるため、キャッシュは無効になり、再度ダウンロードする必要があります。
したがって、ETags システムが提供する柔軟な検証メカニズムを使用しない場合は、ETag を削除することが最善です。 ETag を削除すると、HTTP 応答と後続の要求の HTTP ヘッダーのサイズが削減されます。 Microsoft のサポート記事には、ETag を削除する方法が説明されています。Apache では、構成ファイルで FileETag none を設定するだけです。
私たちのアプリ:
E-Network: ETag 生成戦略をカスタマイズして、プローブ ルールの生成回数を最小限に抑えます。サーバーのデフォルトの ETag は使用されないため、この問題は存在しません。
その他の製品ライン: Apache の設定をすぐに確認する人はいません。
ルール 14. Ajax のキャッシュ
パフォーマンス最適化ルールは Web 2.0 アプリケーションにも適用されます。 Ajax のパフォーマンスを向上させる最も重要な方法は、「ルール 3: Expires ヘッダーの追加」で説明したように、応答をキャッシュ可能にすることです。以下の他のルールも Ajax に適用されます。もちろんルール 3 が最も効果的な方法です:
ルール 4. ページ要素を圧縮する
ルール 9. DNS クエリの数を減らす
ルール 10. スクリプト ファイルを最小限に抑える
ルール 11. リダイレクトを避ける
ルール 13.ETag を設定する
私たちのアプリ:
現時点では、Ajax リクエストをキャッシュしたくない場合は、各 Ajax リクエストの URL にタイムスタンプを追加するだけです。
現在の CSS のカプセル化も優れていますが、主に IE シリーズ向けのソリューションであり、ブラウザーの互換性の問題を簡単に解決するために YAML やブループリントなどの CSS フレームワークの導入を検討できます。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









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

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

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

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

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

この記事では、モバイルデバイスのレスポンシブWebデザインに不可欠なViewportメタタグについて説明します。適切な使用により、最適なコンテンツのスケーリングとユーザーの相互作用が保証され、誤用が設計とアクセシビリティの問題につながる可能性があることを説明しています。

この記事では、< iframe>外部コンテンツをWebページ、その一般的な用途、セキュリティリスク、およびオブジェクトタグやAPIなどの代替案に埋め込む際のタグの目的。

GiteEpages静的Webサイトの展開が失敗しました:404エラーのトラブルシューティングと解像度Giteeを使用する
