21
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

サイトの速度改善するときのAjaxの使い方

Posted at

はじめに

サービスの速度改善のために先月読んだハイパフォーマンスWebサイトがとても良かったので、の方も買って読んでいます。
そのまとめというかメモを。今回は第1章のメモです。

トレードオフ

  • コードに手を加えるときはいつでも、バグの混入の危険性の代わりにコード改善の可能性を取っていることを忘れない
    →最適化をするときは、実行にあまり時間がかからない部分を高速化しようとはせず、計測した上で、効果が得られないものには手を出さない

最適化の原則

  • アルゴリズムがパフォーマンスに大きく影響
  • もっとも時間がかかるのはループ部分
  • 多重ループの一番内側のループを最適化すると大きな効果あり
  • 「欠陥の3軸」という3つの線
  1. 非効率ライン:ユーザの集中力の低下
  2. プラスとレーションライン:ユーザが待たされていると感じる
  3. 欠陥ライン:フリーズしたように見え、ユーザがリロードしたり、離脱したりする
figure1.jpg
  • これらを回避するためには
  1. ループ一回あたりの時間を減らす
  2. ループの回数を減らす
  3. 再設計のアルゴリズムを変える
  • ループがネストしている場合は、上の2,3の回避方法しかない
    →ループのコストがO(nlogn)O(n^2)、それ以上の場合、n(=処理)が増えるにつれてかかる時間が大幅に増えるため、ループ一回あたりの時間を減らしても大した効果はない
figure2.jpg

Ajax

  • サーバと(通常JSON形式の)データパケットをやり取りし、取得したデータをJavaScriptで書いたプログラムがブラウザの表示を更新する
    → 送受信するデータ量が大幅に減り、視覚的フィードバックを返す時間を大幅に減らすが、実装するコストがかかる
  • Ajaxアプリケーションは2つのシステムに完全に分離されている
  • Ajax技術を性能向上に生かすには、適切な「分業」が不可欠で、パケットは限りなく小さくする
    → 必要なときに必要な分のデータを送信することで、ブラウザ側の処理を抑え、ループの実行が速くなる
  • すべてのデータをブラウザに送信するのは間違い
    → ・Ajax化によって回避したはずの応答に遅延がまた出る
    ・ブラウザが処理するデータが増えるため、パフォーマンスの低下に繋がる
  • Ajax技術をうまく使えば、アプリケーションの高速化ができる
    →ポイントは、サーバとブラウザの間をとること

ブラウザとJavaScript

  • ブラウザはJavaScriptの実行にはほとんど時間を使わない
    →スクリプトの改善はせず、正しく分かりやすく書くべき
  • DOMに時間がかかる
    ※DOMとは、「Document Object Model」の略で、HTMLやXML文書を取り扱うためのAPIである。現在はすべてのブラウザがDOMを扱うことができる
21
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?