最適化最適化

クライアントの最適化のトピックを継続し、 リソースをマージします。



前に示したように、リソースを「コア」(すべてのページにロードされる)と「ページリソース」(それらを使用するページにのみロードされる)の2つのグループに分割すると便利です。 問題は、カーネルに含める必要があるリソースを選択することです。カーネルが大きすぎると、サイトの初期ロード時間が大幅に増加する可能性があります。



ページアクセスには主に3つのタイプがあります。



1.ブートストラップ(選択したページのカーネルとリソースの両方がロードされます)

2.新しいページの読み込み(カーネルはキャッシュにあり、選択したページのリソースが読み込まれます)

3.古いページをロードします(カーネルとページリソースの両方がキャッシュにあります)。



3番目のケースでは、ダウンロード速度に影響を与えることはできません。 さらに、初期ロードを高速化するには、カーネルサイズを小さくすることが有益です。したがって、ケース(1)の最適化は、ケース(2)のブート時間を悪化させ、その逆も同様です。 どうする







PDFの数式



次の表記法を使用します。







ケースの数(1)とケースの総数(1)および(2)の比率をp_rとして示します(この値は、Webサーバーのログから計算するか、推定値1 / n_pを使用できます)。



ページiとそのロード時間を選択する確率を、最初のケースではp_ {1i}およびt_ {1i}として、2番目のケースではp_ {2i}およびt_ {2i}として示します。

(p_ {1i}およびp_ {2i}は、Webサーバーのログから計算できます)。 任意のページのリソースをロードするための待ち時間が得られます



M = \ sum_i(p_r t_ {1i} p_ {1i} +(1-p_r)t_ {2i} p_ {2i})。



この場合、tは2つの部分で構成されます。ネットワーク遅延l(接続の確立、HTTP要求の送信、応答ヘッダーの受信など、ほぼ一定の時間コストを含む)とデータ転送時間d。 リソースをコア(インデックスc)とページリソース(インデックスp)に分割すると、次のようになります。



t_1i = l_ {ci} + l_ {pi} + d_ {ci} + d_ {pi}、

t_2i = l_ {pi} + d_ {pi}。



カーネルリソースはすべてのページで共有されるため



l_ {ci} = l_ {c} = const

d_ {ci} = d_ {c}-ページに依存しません



また、すべてのページリソースが結合されるため、l_ {pi} = l_ {p} = constです。 わかった



M = \ sum_i(p_r p_ {1i}(l_ {c} + l_ {p} + d_ {c} + d_ {pi})+(1-p_r)p_ {2i}(l_ {p} + d_ {pi }))=

= p_r(l_ {c} + l_ {p})+(1-p_r)l_ {p} +

+ p_r dd_ {c} +

+ \ sum_i(p_r p_ {1i} d_ {pi})+(1-p_r)p_ {2i} d_ {pi})



lは変更できないため、式を最小化する必要があります



p_r d_ {c} + \ sum_i(p_r p_ {1i} d_ {pi})+(1-p_r)p_ {2i} d_ {pi}



dの値は、明らかにリソースsのサイズに比例します(残念ながら、リソースはお互いのダウンロード速度に影響しません)。



M〜p_r s_ {c} + \ sum_i(p_r p_ {1i} s_ {pi})+(1-p_r)p_ {2i}(s_ {pi})



式を行列形式で記述すると、次のようになります。



p_r 1_r ^ t S(1_r-a)+ p_r p_1 BS a +(1-p_r)p_2 BS a =

= p_r 1_r ^ t S 1_r +(p_r p_1 B +(1-p_r)p_2 B-p_r 1_r ^ t)S a



明らかに、項p_r 1_r ^ t S 1_rは定数です。 したがって、最小化する必要がある最終式は次のとおりです。



(p_r p_1 B +(1-p_r)p_2 B-p_r 1_r ^ t)S a = ca



値(p_r p_1 B +(1-p_r)p_2 B-p_r 1_r ^ t)Sには未知数が含まれていないため、計算できます。 結果は行ベクトルcになります。 定義では0と1のみを含むことができるため、タスクは簡単になります。c_i<= 0の場合、a_i = 1です。



All Articles