0

さて、私は古いASPClassicWebサイトを持っています。データを毎日キャッシュすることで、膨大な数のDB呼び出しを減らすことができると判断しました。私たちのサイトのデータは読み取り専用であり、非常にゆっくりと変化します。私たちのサイトの使用状況に基づいて、サーバーに影響を与えることなく、毎日の訪問ごとにクエリ文字列でページをキャッシュできると思います。

私が最初に考えたのは出力キャッシュを使用することでしたが、すぐに気付いた問題は、3ページ目のリクエストが生成されるまでパフォーマンスが得られなかったことです。SQLプロファイラーを使用してこれを確認しましたが、理由はわかりません。

私の2番目の考えは、 http: //www.4guysfromrolla.com/webtech/032002-1.shtmlからこのObjPageCacheインクルードファイルを追加することでした。いくつかの調査の結果、これがhttp://support.microsoftを解決するよりも多くの問題を引き起こす可能性があることを発見しました。 .com / kb / 316451

ここにいる誰かが、2002年以降、同じサーバーへのServerXMLHTTPまたはWinHTTP要求の送信に関する問題がMicrosoftで解決されたことを教えてくれることを願っています。

4

1 に答える 1

0

データの維持方法に応じて、データをキャッシュするさまざまな方法から選択できます。

データが変更されて1つの場所に保存された場合は、サーバーディスクに保存してリンクで参照するhtmlファイルを生成することを選択できます。ただし、これには、サイトを実行しているプロセス(NETWORK SERVICEなど)への書き込みアクセスが必要になります。これにより、スクリプトエンジンが関与することなくサーバーがこれらのページを提供するため、高速ページが生成されます。

もう1つのオプションは、Applicationオブジェクトに格納してデータを必要とするページで参照するDomDocumentにデータを読み込むことです(したがって、データベースへのラウンドトリップを保存します)。キャッシュされたデータと一緒に2つのタイムスタンプを保持できます(1つはキャッシュ時間用で、もう1つはデータベース内のデータの変更時用です)。タイムスタンプを使用すると、キャッシュされたデータの古さをすばやくチェックできます。キャッシュされたタイムスタンプ<>データベースのタイムスタンプ=>データの更新。それ以外の場合は、キャッシュされたデータを使用します。このアプローチについて注意すべきことの1つは、アプリケーションがマルチスレッドオブジェクト以外のオブジェクトを受け入れないため、MSXML2.FreeThreadedDomDocument.6.0を使用する必要があることです。

個人的には、より動的な使用が可能であり、サイトを実行しているプロセスの書き込みアクセス許可について心配する必要がないため、最後のものを好みます(とにかくセキュリティリスクをもたらす可能性があります)。

于 2012-10-11T20:49:20.050 に答える