Yahooが開発したウェブページスコアリングプラグインYSlowのスコアリングルール

Yahooが開発したウェブページスコアリングプラグインYSlowのスコアリングルール

YSlow は、Yahoo USA が開発したページ スコアリング プラグインです。非常に優れています。これにより、ページの多くの欠点がわかり、それを改善および最適化する方法がわかります。
YSlow のスコアリング ルールを注意深く学習してください。
主な項目は12個あります。
1. HTTP リクエストを減らします。 。リクエストは 141 件 (JS リクエスト 15 件、CSS リクエスト 3 件、CSS 背景画像リクエスト 47 件) あり、これはひどい状況です。考えてみると、なぜこれら 3 種類のリクエストはページ読み込みの重要な悪影響要因として挙げられているのに、過剰な IMG リクエストは悪影響要因として挙げられていないのでしょうか。
これらの要求は回避できることが判明しました。
15 個の JS と 3 個の CSS を特別な方法で結合できます (技術部門がこの課題の解決に協力してくれました。本当にありがとうございます)。結合後、通常は 1 つの JS と 1 つの CSS のみがページに表示されます (JS のカプセル化には特定の要件があります)。
しかし、47 個の CSS 背景画像リクエストをどのように解決するのでしょうか?ページ上の純粋な IMG リクエストは妥当なのに、CSS 背景画像リクエストが多すぎると不利になるのはなぜですか?私はこれについて長い間考えていましたが、ついに理解できました。それは次のようになりました:
通常、画像 CSS 背景を使用して、ページ上のアイコン、列の背景、画像ボタンを実装します。通常、この画像 CSS 背景で使用される画像は比較的小さいため、これらの画像を比較的大きな画像に結合することは完全に可能です。この方法では、ページ上の CSS 背景画像リクエストは 1 つだけ、または最大で 2 ~ 3 つになります。その後、Yahoo の US ページを詳しく見てみると、同じことをしていることがわかりました。これらのアイコン、列の背景、画像ボタンを定期的にマージして CSS 呼び出しを容易にするには、ある程度の時間がかかりますが、コスト効率が良く、間違いなく必要です。YSlow も強くお勧めします。
2. CDN を使用する このスコアは最低の F です。正直に言うと、最初は CDN が何なのか知りませんでした。後からGOODLEで確認したら知りました。 CDN の正式名称は Content Delivery Network です。その目的は、既存のインターネットにネットワーク アーキテクチャの新しいレイヤーを追加し、Web サイトのコンテンツをユーザーに最も近いネットワークの「エッジ」に公開することで、ユーザーが必要なコンテンツを近くで取得できるようにし、インターネット ネットワークの混雑の問題を解決し、Web サイトにアクセスするユーザーの応答速度を向上させることです。技術的な観点からは、ネットワーク帯域幅が狭い、ユーザーの訪問数が多い、ネットワーク ポイントの分布が不均一であるなどの理由で、ユーザーが Web サイトにアクセスするときに応答時間が遅くなるという問題を総合的に解決します。
上記の説明を読んで、CDNが何であるかを基本的に理解しました。その後、中国のサイトSAに相談したところ、私たちのウェブサイトはまだCDNに最適化されていませんが、同様の問題を解決するためのより高度な技術を持っていると言われています(具体的な技術は秘密にしておきます)。しかし、結局のところ、CDNも非常に優れた技術なので、私たちの高度な技術に基づいてCDNの最適化を行うと、今よりも間違いなく良くなります、笑。 SAは来年、数か所でCNDを行う予定だそうだ。
3. Expires ヘッダーを追加して、期限切れの HTTP ヘッダーを設定します。Expires ヘッダーを設定すると、スクリプト、スタイルシート、画像、Flash などをブラウザのキャッシュにキャッシュできます。
実際、当社のウェブサイトでもこの最適化を行っており、少なくとも画像はこの点に関して最適化されていますが、完全には完了していません。弊社の CSS と JS はまだ最適化されていませんが、外部の広告 JS が最適化されています。本当は、期限切れの HTTP ヘッダーの設定は、スクリプト、スタイルシート、Flash で行うべきです。しかし、SA はこれをしなかったと言われていますが、JS や CSS には一定のロジックがあるため、一定のリスクがあります。サーバーとクライアントの両方にキャッシュがあると、何か問題が発生した場合、将来的に問題を見つけるのが難しくなります。しかし、両者は天秤にかけて共存できると思います。
4. Gzip コンポーネントは、ページ コンテンツを Gzip 形式で圧縮します。Gzip 形式は非常に一般的な圧縮技術です。ほぼすべてのブラウザーに Gzip 形式を解凍する機能があり、非常に高い比率で圧縮できます。一般的な圧縮率は 85% で、サーバー側の 100KB ページを約 25KB の Gzip 形式データに圧縮してクライアントに送信できます。クライアントは Gzip 形式のデータを受信すると、自動的に解凍してページを表示します。
当社のウェブサイトは基本的にこれを 100% 達成していますが、この項目のスコアは想定していた A レベルに達しませんでした。その理由は外部リンクにあります。たとえば、当社のホームページには外部広告 JS があります。この JS を所有するウェブサイトは GZIP 最適化されておらず、それが当社のウェブサイトに影響を与えています。そのため、当社の評価は B または C のみです。
5. CSS を上部に配置する CSS 外部リンクをページの上部に配置します。
実際、私たちは一般的にこの原則に従っています。CSS 外部リンクがロジックの一部としてページ ヘッダーの下に表示される場合、個人的にはそれ自体が間違いだと思います。幸いなことに、基本的にすべてのページでこれを実現していますが、LIST ページなど一部のページでは、ロジックにリンクされた CSS リンクがまだ残っています。その理由は、そもそも合理的ではない一部の製品ロジックを解決するためです。したがって、私たちフロントエンド Web エンジニアには、これらの無理な製品ロジックがページ結果やページの読み込み速度を破壊しないようにする義務があり、実装のためだけに実装することはできません。
前のページ1 2 次のページ 全文を読む

<<:  MySQL GTID の総合概要

>>:  Dockerでmysqlのルートパスワードを変更する方法

推薦する

MySQLバイナリログを介してデータベースデータを復元する方法の詳細な説明

ウェブサイト管理者は、さまざまな理由や操作により、ウェブサイトのデータを誤って削除したり、ウェブサイ...

MySql エラー 1698 (28000) の解決策

1. 問題の説明: MysqlERROR1698 (28000) の解決方法、新しくインストールされ...

ElementUI の this.$notify.close() 呼び出しが機能しない問題の解決方法

目次要件の説明問題の説明問題分析問題解決質問の拡張要件の説明このプロジェクトでは、まずユーザーが質問...

js+ca​​nvas でコードレイン効果を実現

この記事では、js+ca​​nvasコードの雨効果の具体的なコードを参考までに共有します。具体的な内...

Alibaba Cloud に MySQL データベースをインストールするときに発生する 2002 エラーを解決する方法

データベースのインストール中に次のエラーが発生しました: 解決策は次のとおりです。 1. binディ...

ページにデータを表示するReactメソッド

目次親コンポーネントリストボックスリストコンポーネントボタンコンポーネント PageButton昨年...

Windows 10 システムに mysql-8.0.13 (zip インストール) をインストールする詳細なチュートリアル

インストール環境の説明•システムバージョン: windows10 •MySQL バージョン: mys...

Ubuntu 14.04 で QT5 をインストール、設定、アンインストールするための詳細な手順

1. 以前 QT5.13 バージョンをダウンロードしましたが、インストール後、Qtcreator を...

Ubuntu 上の Apache で SSL (https 証明書) を設定する正しい方法の詳細な説明

まず、Alibaba Cloud の公式チュートリアルをご覧ください。ファイルの説明: 1. 証明書...

Docker プライベートリポジトリの管理とローカルリポジトリ内のイメージの削除

1: Dockerプライベートウェアハウスのインストール1. イメージリポジトリからイメージをダウン...

DockerにJava環境をインストールするための実装手順

この記事は Linux centos8 をベースにして、docker をインストールし、イメージをプ...

Vue コンポーネント (Vuex を含む) 間の値の転送に関する簡単な説明

目次父から息子へ:息子から父へ: Vuex を使用せずにコンポーネント間で値を渡す方法は、親から子、...

Linuxにgitをインストールする方法

1. はじめにGit は、規模の大小を問わずあらゆるプロジェクトを俊敏かつ効率的に処理するために使用...

Centos8 システムの VMware インストール チュートリアル図 (中国語グラフィカル モード)

目次1. ソフトウェアとシステムイメージ2. 仮想マシンを作成する3. CentOS8をインストール...