Web開発のパフォーマンスガイドライン(ページロード時間を減らす面)

3102 ワード

ガイドライン(概要)
  • HTTP要求
  • を減少する.
  • CDN加速
  • 空のsrcまたはhref属性値
  • を回避
  • 増加期限切れヘッダ
  • 起動GZIP圧縮
  • cssファイルをヘッダ
  • に置く
  • javascriptを末尾
  • に置く
  • css式
  • の使用を避ける
  • 使用しないcss文
  • を削除
  • javascript、cssコードを圧縮する
  • 再描画を減らす
  • HTTPリクエストの削減
    HTTPリクエストの削減は、上記のパフォーマンスガイドラインの中で最も顕著なものであり、3つの主要な側面に分けて議論することができます.
  • パラレル接続を使用する開発者は、サーバ側のパフォーマンスへの影響だけを考慮して、ブラウザ側の制限を無視しがちです.たとえば、同じ時間にロードできるリソースがどれだけあるかなどです.HTTP 1.1プロトコルは、単一のユーザが同じ時間に2つ以上の接続を維持できないことを明確に制限しているが、現代のブラウザの大部分はこの制限を突破し、多くのブラウザは4つまたは6つの並列接続をサポートすることができる.同様に、リソースファイルを異なるドメイン名の下にハッシュすることもできます.この方法はブラウザの同時実行を十分に利用しているので、ロード効率を高めることができますが、DNSのクエリーに時間がかかるため、ドメイン名の解析が多すぎるとパフォーマンスが低下します.
  • リソースファイルのパラレルリンクを統合する議論は、大きなファイルが小さなファイルよりも良いという結論を得た.この説は少し違和感があるが、現在のネットワーク環境では、この説が確認されている(ボリュームの大きいファイルは複数の小さなファイルよりもロードが速い).また、各HTTPリクエストは、時間的および帯域幅的に少なくともいくつかのオーバーヘッドが発生し、リソースを統合してHTTPリクエストを削減できれば、一定のパフォーマンスが向上します.
  • 画像精霊(css sprite)という名詞を使うのはよく知られているはずで、何枚かの画像を1枚にまとめるという意味です.これはHTTPリクエストを効果的に減らす方法で、画像を使用するときにcssの位置をいくつか使ってこの画像の位置を決定するだけでいいです.いずれかのアイコンを使用すると、他の画像もキャッシュされます(再要求は必要ありません).100個のアイコンがあれば99回のHTTP要求を減らすことができます.

  • CDNアクセラレータの使用(コンテンツ配信システム)
    CDNは多くのサーバを持ち、戦略的に導入され、世界をカバーできるネットワークシステムであり、ユーザーが比較的大きなサイトにアクセスすると、CDNは最近のノードからユーザーにサービスを提供します.しかし、ダイナミックデータの処理は集中的なサーバに置くのが望ましい.地域間同期データベースは開発者を悩ませる問題であり、多くのインターネット会社は購入、登録などのデータに関するものを一つの場所に置いて処理しているからだ.また、CDNサービスは高いので、サイトのトラフィックがこんなに多くのお金を払う価値があれば、性能を向上させるに違いありません.
    空のsrcプロパティとhrefプロパティを回避
    Javascriptを使用して空のsrcに値を割り当てると、javascriptはドキュメントの最後に配置され、srcは空ですがHTTPリクエストが発行されます.空のhrefプロパティのリンクをクリックすると、同じようにHTTPリクエストが発行されます.このHTTPリクエストはロード時間に影響しませんが、サービス側に一定のトラフィックの浪費をもたらします.記述的な情報を持つ非常にhref属性を作成し、今回のHTTPリクエストTriggerName $("#TriggerName").click(function (e) { e.prventDefaulet(); // ... }); を阻止することができます.また、空のsrcとhrefもエラーを発生します.
    期限切れヘッダーの追加
    期限切れヘッダを追加すると、ブラウザはこれらのファイルをキャッシュし、ユーザーがこのサイトに2回目にアクセスしたときにサービス側がこのファイルを要求することはありません.キャッシュの詳細についてはこちらをクリックしてください
    GZIP圧縮の有効化
    HTTPプロトコル1.1はAccept-Encodingという機能(HTTPリクエストの内容が圧縮されていることを示す)を導入し、GZIPはその圧縮方式の一つであり、現在圧縮比率が最も高く、ヤフーの統計によると約70%の応答サイズを減少させた.ファイル転送時間を短縮するだけでなく、帯域幅も節約できます.
    cssを頭に置く
    ブラウザはすべてのHTML解析が完了してから要素をレンダリングするのではなく、同時に行うので、cssを前に置くと先にレンダリングされた要素の表示スタイルが正しいことが保証されます.このように書くのは性能の面でも大きな意味があります.多くのブラウザの再描画を引き起こすことを望んでいません.スタイルファイルをページの下部に置くと、ブラウザはすべてのファイルがロードされてからページを描くのを待っています.ユーザーは長い間白い画面を見つめていた可能性があります.
    javascriptを末尾に置く
    スクリプトはパラレルロードをブロックします(linkは最大限のパラレルロードをサポートします).つまり、ブラウザがスクリプトをロードすると、他のファイルはロードされません.スクリプトがヘッダにある場合、彼はページのレンダリングを阻止します.scriptラベルのDRFFERプロパティを使用して、ブラウザに他のファイルを非同期でロードするように通知できますが、2つの問題が発生します.
  • すべてのブラウザがこのプロパティを認識しているわけではありません
  • DEFFERプロパティを使用したスクリプトはdocument.write()
  • を使用できません.
    css式の使用を避ける
  • CSS式(IE 5、6、7)
  • をサポートするブラウザは一部のみである.
  • パッケージ圧縮後、CSS式は通常のCSSよりずっと長い
  • になります.
  • 実行頻度はかなり高い(ユーザがマウスを移動したりページをスクロールしたりすると実行することが多い)
  • .
    ページのリフローと再描画を減らす
    この問題については私のブログ園のブログを見てもいいです.
    転載先:https://www.cnblogs.com/nanshanlaoyao/p/6371452.html