- PR -

ASP.NET ユーザーコントロールのキャッシュについて

1
投稿者投稿内容
アレク
会議室デビュー日: 2005/04/11
投稿数: 14
投稿日時: 2005-12-26 21:46
お世話になっています。

開発環境:VS2003.net OS:XPPro SP2(IIS5.1)
現在ASP.NET(1.1)でWebサイトを作成しています。
そこでページキャッシュを使おうと考えているのですが
わからないことが一つと、疑問点が一つ出てきました。
まずわからないことですが
ユーザーコントロールでキャッシュを行う場合です。
キャッシュ自体の使い方は
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpgenref/html/cpconoutputcache.asp

このページなどを参考にやり方はわかりました。
しかしこの方法では、キャッシュを時間でしか指定できません。
キャッシュページは、いわばお知らせ画面のようなもので
更新は管理ツールで行われ、新しいお知らせがあればキャッシュをクリアしたい状態です。
時間設定ではこの要件を満たせません。
ようはツールでデータを更新したタイミングで、キャッシュをクリアしたいのです。

で、調べてみたところこの@it内に
http://www.atmarkit.co.jp/fdotnet/dotnettips/204aspcashdb/aspcashdb.html
という記事を発見しました。
しかし今度は、要件は満たしていますが、手法があいませんでした。
この例の場合、データセットを使用していますが
現在作成しているページは、データの表示をオリジナルのスクリプトで表示しています。
データセットやデータバインドを使用していません。
かなりデザインが絡む部分なのでそういう仕様となっています。
よってデータセットをキャッシュしておくという方法が使えません。

理想は、ユーザーコントロールレベルでのキャッシュであり
データセットレベルのキャッシュではないという感じです。

ユーザーコントロールの時間でのキャッシュを
なんとかデータベースの変更をどうにかして関知してクリアするようにしたいのですが
可能でしょうか?
何らかのプログラムで意図的にキャッシュクリアのような関数があれば
データベースに書き込んだときにそれを呼ぼうと思ったのですが
いくら探してもユーザーコントロールの@ OutputCache系にはそれらしいものがありませんでした。

そして疑問の方なんですが
よく記事一覧などで、ページング機能を使っているところがあると思いますが
これをキャッシュすることは問題ないのでしょうか?
動的に記事を生成している場合、このページをキャッシュすると
最初に表示する部分だけがキャッシュされるんでしょうか?
それとも見えない部分のページングのところも全てキャッシュされているのでしょうか?

長くなりましたが、よろしくお願いします。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-12-27 06:22
リファレンスのうろ覚えですが・・・

ファイルの更新を、キャッシュの更新と同期させることが出来ませんでしたか?「アップデート」の時に、ファイルに touch すれば、いいのでは?
todo
ぬし
会議室デビュー日: 2003/07/23
投稿数: 682
投稿日時: 2005-12-27 13:54
引用:

よってデータセットをキャッシュしておくという方法が使えません。


RenderかRenderControlで、UserControlが吐くHTMLをCacheするとか。

アレク
会議室デビュー日: 2005/04/11
投稿数: 14
投稿日時: 2005-12-27 20:46
>Jittaさん
私の2個目のリンクで書いてあることのようなものでしょうか?
ファイルとかの更新状況を見て、キャッシュのクリアするかどうかを判定するというのは
そのリンク先でわかったのですが、そこの例だと
ページキャッシュができないような感じでした。

>>todoさん
その単語で調べてみたんですが、キャッシュに関するような記事が見つかりませんでした・・・
動作的には
>>UserControlが吐くHTMLをCacheするとか。
が動的にできれば確かに万事解決なのですが。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-12-27 20:55
ん?IIS にキャッシュさせれば?


私は使わなかったので詳しく見ていませんが、ページをキャッシュする(サーバコードの実行をバイパスする)方法もあったと思いますよ?
_________________
1

スキルアップ/キャリアアップ(JOB@IT)