アプリケーションまたはセッションオブジェクトの非軽量コンポーネントのキャッシュを回避する方法
Application または Session オブジェクトにデータをキャッシュするのは良い方法ですが、COM オブジェクトをキャッシュするのは重大な欠点があります。頻繁に使用する COM オブジェクトを Application または Session オブジェクトにキャッシュする仕事は非常に魅力的ですが、残念ながら Visual Basic 6.0 以前で書かれたオブジェクトコンポーネントを含む多くの COM オブジェクトは Application または Session オブジェクトに格納されると深刻なボトルネックになります。
特に、コンポーネントがあまり軽快に書かれていない場合、ボトルネックが発生する可能性が非常に高いです。軽量なコンポーネントとは、FTM(Free Threaded Termination)を取り入れたThreadingModel=Bothと記されたものや、ThreadingModel=Neutral(NeutralモードはWindows2000とCOM+の新機能)と記されたものである。以下のコンポーネントは軽量ではありません。
フリースレッドコンポーネント(FTMとして組み立てられる場合を除く)
アパートメント・スレッド化された部品
シングルスレッド・コンポーネント
構成されたコンポーネントは Neutral-threaded でない限り軽量コンポーネントではありません。apartment-threaded コンポーネントやその他の非軽量コンポーネントはページ全体のコンテキスト、つまり単一の ASP ページで作成および解放されるコンテキストでうまく機能します。
非軽量コンポーネントがキャッシュされた場合、どのようなエラーが発生するのでしょうか?ASP はリクエストに応答するワーカスレッドのプールを維持し、通常、新しいリクエストは最初に利用可能なワーカスレッドによって制御されます。セッションがスレッドにロックされている場合、リクエストは関連するスレッドが利用可能になるまで強制的に待機させられます。ここに例えがあります。あなたはスーパーマーケットに行き、食品を買って、3番の支払カウンターで支払いをします。それ以来、そのスーパーマーケットで食品を買うときは、他の支払いカウンターがそれほど混んでいなくても、あるいは空いていても、3番の支払いカウンターに行くことが多いでしょう。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ハートビート・エフェクトのためのHTML+CSS
-
HTML ホテル フォームによるフィルタリング
-
HTML+cssのボックスモデル例(円、半円など)「border-radius」使いやすい
-
HTMLテーブルのテーブル分割とマージ(colspan, rowspan)
-
ランダム・ネームドロッパーを実装するためのhtmlサンプルコード
-
Html階層型ボックスシャドウ効果サンプルコード
-
QQの一時的なダイアログボックスをポップアップし、友人を追加せずにオンラインで話す効果を達成する方法
-
sublime / vscodeショートカットHTMLコード生成の実装
-
HTMLページを縮小した後にスクロールバーを表示するサンプルコード
-
html のリストボックス、テキストフィールド、ファイルフィールドのコード例