前に示したように、リソースを「コア」(すべてのページにロードされる)と「ページリソース」(それらを使用するページにのみロードされる)の2つのグループに分割すると便利です。 問題は、カーネルに含める必要があるリソースを選択することです。カーネルが大きすぎると、サイトの初期ロード時間が大幅に増加する可能性があります。
ページアクセスには主に3つのタイプがあります。
1.ブートストラップ(選択したページのカーネルとリソースの両方がロードされます)
2.新しいページの読み込み(カーネルはキャッシュにあり、選択したページのリソースが読み込まれます)
3.古いページをロードします(カーネルとページリソースの両方がキャッシュにあります)。
3番目のケースでは、ダウンロード速度に影響を与えることはできません。 さらに、初期ロードを高速化するには、カーネルサイズを小さくすることが有益です。したがって、ケース(1)の最適化は、ケース(2)のブート時間を悪化させ、その逆も同様です。 どうする
PDFの数式
次の表記法を使用します。
- n_p-ページ数。
- n_r-リソースの量。
- lはネットワーク遅延値です。
- 1_rは、単位のみを含む長さn_rの列ベクトルです。
- 1_p-単位のみを含む長さn_pの文字列ベクトル。
- dはデータ転送時間です。
- aは、長さn_rの列ベクトルです。 この列のi番目の要素は、i番目のリソースに対応します。 要素がゼロに等しい場合、リソースはカーネルに含まれ、そうでない場合はページリソースに含まれます。
- B-ページごとのリソースの所有権のマトリックス。 列はリソースに対応し、行はページに対応します。ページiがリソースjを使用する場合、b_ {ij} = 1。
- S-リソースの重みの対角行列(s_ {ii}-リソースの重みi);
- p_1、p_2-最初と2番目のケースでページを選択する確率の行ベクトル。
ケースの数(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です。