ウェブサイトを高速化する

ウェブサイトを高速化する

パフォーマンスは本当に重要ですか?

パフォーマンスは重要であり、誰もがそれを知っています。なぜ私たちは依然として遅いウェブサイトを作り、ユーザーに悪い体験を与えようとするのでしょうか?ああ、本題に入りましょう。

html

1. インライン/埋め込みコードを避ける:

1) インライン: HTML タグの style 属性でスタイルを定義し、onclick などの属性で Javascript コードを定義します。
2) 埋め込み: <style> タグを使用してページ内のスタイルを定義し、<script> タグを使用して Javascript コードを定義します。
3) 外部ファイルを参照する: <style> タグの href 属性を定義して CSS ファイルを参照し、<script> タグの src 属性を定義して Javascript ファイルをインポートします。

1と2はhttpリクエストの数は減りますが、HTMLのサイズは大きくなります。3と比較すると全体のサイズは大幅に小さくなるため、分業やメンテナンスに便利です。

2. スタイルを上に、スクリプトを下に:

 <html>
  <ヘッド>
      <メタ文字セット="UTF-8">
      <title>ブラウザダイエット</title>
      <!-- CSS -->
      <link rel="スタイルシート" href="style.css" media="すべて">
  </head>
  <本文>
     <a>こんにちは</a>
     <!-- JS -->
     <スクリプト非同期src="script.js"></スクリプト>
  </本文>
</html>

1) スタイルはヘッダーにあり、ページはすばやくレンダリングされるため、ユーザーはページの読み込みが速いと感じます。それどころか、乱雑なページレイアウトが最初に表示され、ユーザーに悪い印象を与えます。
2) スクリプトを上部に配置すると、HTML のレンダリングや並列読み込みに影響し、最初の画面が読み込まれ、通常、ユーザーは機能を見る必要がないため、スクリプトを下部に配置することをお勧めします。 async 属性を使用してスクリプトを非同期的にロードしてみます。

3. HTMLを圧縮する

コードを読みやすく保つための最善の方法は、コードにコメントを追加し、インデントを使用することです。

しかし、ブラウザにとっては、これはどれも重要ではありません。このため、自動化ツールを使用して HTML を縮小することは非常に便利です。

余分な空白、コメント、およびコンテンツ構造に関係のない不要な文字を削除することで、バイト数を節約できます。 gzip 圧縮を使用してみてください。

4. DOMノードを減らす

ユニバーサル div の代わりにセマンティック タグを使用します。

5. HTML の記述が gzip 圧縮率に与える影響

タグ属性を記述する場合、複数の同一のタグ属性値を同じ順序に保つことが最適です。 gzip 圧縮を高速化できます。

CS

1. CSSを圧縮する

HTML を圧縮するのと同様に、自動化ツールを使用して CSS を圧縮します。反復的なコードを改良する方法を学びます。

2. 複数のCSSを結合する

通常、CDN マージまたは会社のマージ ツールを通じてマージされ、HTTP リクエストの数を効果的に削減します。

3. CSS式の適切な使用

誰もが CSS 式を適切に使用できるわけではありません。したがって、すべての機能を JavaScript に任せます。 cssちょっと休憩します。

画像

1. CSSスプライトを使用する

psd内の小さなレイヤーを1つのレイヤーに統合するとレイアウトが完成します。レイアウトはタイトにする必要があります。エッジが粗い写真の場合は、エッジの色を設定できます。 png-8をpng-24に設定することもできます(IE6フィルター処理)

2. 通常のCSSスプライト画像をbase64画像エンコーディングで置き換える

使用前に:

 .img {
  背景画像: url('image.png');
}

使用後:

 .img {
  背景画像: url('data:image/png;base64,iVBORw0KGgo');}

Base64 画像エンコーディングは CSS スプライト画像ではなく個々の画像のみを対象としており、主流のブラウザと IE8 以降をサポートしています。 http リクエストの数を減らすことはできますが、gzip 圧縮されていない HTML および CSS の場合、http リクエストによって取得される大きなファイルを減らすことはお勧めできません。

3. 画像を最適化する

画像フォーマットは適切に管理する必要があります。画質が問題ない場合は、状況に応じて png、jpg、gif 形式を適切に使用できます。一般的に、CSS スプライトには PNG 形式、アニメーション画像には GIF 形式、カラフルな広告画像には JPG 形式が使用されます。

画像サイズを制御し、Web サイトが画像をキャッシュできるようにする必要があります。一般的に、広告画像は 100k 程度にする必要があります。画像が大きすぎる場合は、いくつかの部分に切り分けてつなぎ合わせることもできます。

フロントエンド CSS の Web サイトでは、レイアウトに画像を使用しなければならない人は不正行為をしていると述べています。 CSS3 が普及するにつれて、この文章がモットーになるでしょう。

4. 「プログレッシブJPEG解析」

要約すると、連続した jpg 形式の方がパフォーマンスに優れています。

ジャバスクリプト

1. ファイルの非同期読み込み

var vst = document.createElement('script');
    vst.type = 'text/javascript';
    非同期処理を true に設定します。
    vst.src = srcIndex;
    var s = document.getElementsByTagName('script')[0];
    s.parentNode.insertBefore(vst, s);

一部のサードパーティのファイルのダウンロードに問題が発生したり、ページの読み込みが重くなったりする場合。これらのファイルを非同期で読み込む必要がありますが、非同期は良い方法です。

2. ループされたオブジェクトの保存

使用前に:

 var str = "ナナナナナ"; 
(var n = 0; n < str.length; n++) の場合 {}

使用後:

 var str = "ナナナナナ", 
strLgth = str.length; 
(var n = 0; n < strLgth; n++) の場合 {}

ループはパフォーマンスをかなり消費します。ループされたオブジェクトを保存すると、各ループでオブジェクト計算を実行する必要性が減ります。

3. リフローと再描画を最小限に抑える

使用前に:

 var coored = document.getElementById("ctgHotelTab");
    document.getElementById("ctgHotelTab").style.top = coored.offsetTop + 35 + "px";

使用後:

 var coored = document.getElementById("ctgHotelTab"),
    オフセットTop = coored.offsetTop + 35;
    document.getElementById("ctgHotelTab").style.top = offetTop + "px";

要素のレイアウトは変更されないが外観が変化すると、再描画が行われます。

style.top を設定すると、ブラウザはレイアウトを再計算する必要があります。 offsetTop をリクエストするたびに、ブラウザはレイアウトを再計算します。レイアウトを変更すると、リフローが発生します。

4. JavaScriptを圧縮する

自動化ツールを使用して js を圧縮します。 html および css と同じです。

5. 複数のjsファイルを結合する

通常、CDN マージまたは会社のマージ ツールを通じてマージされ、HTTP リクエストの数を効果的に削減します。

6. ネイティブ js とフレームワーク js を比較すると、for ループはそれぞれよりも優れています。

パフォーマンステストツール

私がよく使うのはYSLOWです。ページスピードも良好です。パフォーマンスに関する提案をいくつか提供します。

要約する

パフォーマンスが重要であることに疑いの余地はありません。参考のためだけに私の作品を共有しています。詳細については、http://browserdiet.com/zh/ をご覧ください。

<<:  HTML は Double 11 クーポン取得を実装します (クーポン取得ページを開く時間を設定します)

>>:  CSS ファンタスティックボーダーアニメーション効果の実装

推薦する

javascript:void(0) の意味と使用例

voidキーワードの紹介まず、void キーワードは JavaScript で非常に重要なキーワード...

Vue+Echart 棒グラフで疫病データ統計を実現

目次1. まずプロジェクトにechartsをインストールします2. echartsに縦棒グラフテンプ...

角度に基づくツリー型セカンダリテーブルを実現する

まず効果を見てみましょう: コード: 1.html <div class="user...

MySQL INT型の完全な分析

序文: Integer は MySQL で最もよく使用されるフィールド型の 1 つで、通常は整数を格...

モバイル端末の適応により、px は自動的に rem に変換されます。

まずpostcss-pxtoremをインストールします: npm install postcss-p...

MySQLでホワイトリストアクセスを設定する方法

MySQLでホワイトリストアクセスを設定する手順1. ログイン mysql -uroot -pmys...

ウェブサイトがhttpsを有効にした後のSSLのセキュリティ構成と検出

最近のウェブサイトでは SSL を有効にするのが標準となっています。ただし、SSL を設定した後も、...

DIVのぼかし機能を実装する方法

マウスを動かしたときにDIVが消えるように手ぶれ補正を使用するdiv タグ自体は onblur イベ...

Bootstrap 3.0 学習ノートのページレイアウト

今回はレイアウトを中心に学習しますが、これは基本的なHTMLタグのほとんどにも存在するため、比較的簡...

Javascript 文字列メソッドの詳細な説明

目次文字列の長さ: 長さcharAt() charCodeAt()文字列に値が含まれているかどうかを...

MySQLログシステムの使い方に関する簡単なチュートリアル

目次序文1. エラーログ2. バイナリログ1. バイナリログを有効にする2. バイナリログ形式3. ...

Linux で MySQL パスワードを忘れた場合の解決策

問題は次のとおりです。mysql -uroot -p コマンドを入力しましたが、パスワードを忘れてし...

WeChatアプレットが計算機機能を実装

この記事では、WeChatアプレットの計算機機能を実装するための具体的なコードを参考までに紹介します...

Linux システムにおける時間設定の概要

1. 時間の種類は次のように分けられます。 1. ネットワーク時間(タイムゾーンの設定、ntpサーバ...

CSS3 で作成したホバーズーム効果

結果:実装コード: html <link href='https://fonts.go...