高性能なウェブサイトのための14のテクニック

高性能なウェブサイトのための14のテクニック

オリジナル: http://developer.yahoo.com/performance/rules.html
2007.3.20 スティーブ・サウダーズ
マスクによる翻訳
2004 年から、私は Yahoo のアウトライヤー パフォーマンス グループで働き始めました。私たちは、Yahoo 製品の品質検査と改善を専門とする非常に小さなチームです。私は現在、バックエンド エンジニアとして、フロントエンドのコード最適化プロジェクトに取り組んでいるため、これは改善のための絶好の機会だと考えています。私の目標はユーザー エクスペリエンスを向上させることだったので、さまざまな帯域幅でブラウザーの応答時間を測定し、http://yahoo.com からの http トラフィックを示す次のグラフを作成しました。

上記のアイコンの最初のラベルは html で、これは html ドキュメントで最初に読み込まれるものです。この例では、html コードの読み取りは、応答時間全体の 5% しか占めていません。この結果は、ほとんどの Web サイトに当てはまります。米国でサンプリングされた上位 10 の Web サイトのうち、5% を超えているものの 20% 未満の Web サイトは 1 つだけです。残りの 80% の時間は、Web ページ上の他のコンテンツ、つまりフロントエンド (元のテキストがフロントエンドであり、これは html コードを除く残りのコンテンツで、画像、スクリプト、フラッシュ、ビデオなど、さまざまなものになります) の読み取りに使用されます。これが、表示速度を向上させるためにこれらのことに重点を置く必要がある主な理由です。
フロントエンドから始めるべき主な理由は 3 つあります
    ここには改善と強化の可能性があります。サイズを半分に縮小できれば、応答時間を 40% 短縮できます。フロントエンドの改善には、バックエンドの改善よりも必要な時間とリソースが少なくて済みます。 (バックエンドを改善するには、アプリケーション計画、コードの再設計、コードの最適化方法の検討、ハードウェア構成の追加または変更、分散データベースなどが必要です。) フロントエンドの改善は、私たちの仕事で実証されています。Yahoo には、最高のパフォーマンス ルールに従ってユーザー側の応答時間を 25% 以上改善したチームが 50 あります。

私たちの黄金律は、まずフロントエンドのパフォーマンスを最適化することです。これは、ユーザー側の応答時間の 80% を占めるからです。
1. http リクエストの数を減らす<br />画像、CSS、スクリプト、フラッシュなどにより、http リクエストの数が増加します。これらの要素の数を減らすと、応答時間が短縮されます。
CSS Spritesテクノロジーは、画像リクエストの数を減らし、散らばった小さな画像をまとめ、background-positionを使用して背景画像の位置を変更することができます。 HTML要素の幅と高さが事前に定義されていることが前提です。 実際、それはマスクのようなものです。 背景を動かすと、さまざまなシーンが見られます。
埋め込み画像は、data: URL スキームを使用して画像コンテンツ コードを HTML コードに直接埋め込むため、HTML コードのサイズが大きくなります。改善された方法は、埋め込み画像を CSS に埋め込むことです (CSS はキャッシュされます)。これにより、HTML のサイズを増やすことなく、HTTP リクエストの数をより効果的に減らすことができます。
多くのユーザーはキャッシュが空の状態でサイトにアクセスするため、初回の速度は重要です。
最初のルールが最も重要です。
前のページ1 2 3 次のページ 続きを読む

<<:  XHTML の珍しいが便利なタグ

>>:  AngularJSループオブジェクトプロパティで動的列を実装するアイデアの詳細な説明

推薦する

VueはElement el-uploadコンポーネントを使用してピットに足を踏み入れます

目次1. 基本的な使い方2. 画像量の制御3. 画像形式の制限/複数の画像を選択可能補足: vueプ...

カルーセルの制作方法を実現するjs

この記事では、カルーセル画像の表示を実現するためのjsの具体的なコードを参考までに共有します。具体的...

MySQL パフォーマンスの最適化: インデックスを効率的かつ正しく使用する方法

実践こそが真実をテストする唯一の方法です。この記事では、インデックスの全体的な使用法についてのみ説明...

JavaScript プロトタイプとプロトタイプチェーンの深い理解

目次1. プロトタイプとは何ですか? 2. プロトタイプ__プロト__ 4. コンストラクター5. ...

IDEA 構成の Tomcat 起動エラーの問題を解決する

異なるサーブレット パスを構成するときに、次の 2 つのエラーが発生しました。 java.lang....

docker で PostgreSQL データベースをインストールして永続化する方法

Dockerのインストール手順をスキップする1. postgresqlイメージを取得する docke...

JavaScript データのフラット化の詳細な説明

目次フラット化とは何か再帰トストリング減らすアンダーコア_.平坦化_。連合_。違い要約するフラット化...

Vueで配列の変更を監視する方法

目次序文ソースコード学習の第一歩はどこから始めればよいでしょうか?写真から始めましょうソースコードを...

Apache SkyWalking アラーム設定ガイドの詳細な説明

アパッチ スカイウォーキングApache SkyWalking は、マイクロサービス、クラウド ネイ...

MySQL でサーバーのインストールを開始できない場合の解決策について簡単に説明します。

コンピュータに初めて MySQL をインストールする場合、通常このエラー メッセージは表示されません...

Docker+daocloudはフロントエンドプロジェクトの自動構築とデプロイを実現します

自動プロジェクト展開は大企業やユニコーン企業でよく使用され、手動でプロジェクトを展開するよりも効率的...

MySQL InnoDB ロックの概要

目次1. 共有ロックと排他ロック2. 意図ロック3. レコードロック4. ギャップロック5. ネクス...

Dockerイメージのローカル移行の実装

最近 Docker を勉強しているのですが、よく問題に遭遇します。Docker イメージをダウンロー...

CSS3アニメーション属性に基づくWeChatタップアニメーション効果の実装

最近人気のWeChatタップ機能を見て、CSS3アニメーションを見直し、このボックスシェイクアニメー...

Dockerはプロセス操作を管理するためにSupervisorを使用する

Docker コンテナは、起動時に、たとえば ssh または apache デーモン サービスなどの...