- PR -

HttpContext.Current.Cacheについて

投稿者投稿内容
King
ぬし
会議室デビュー日: 2008/06/20
投稿数: 284
投稿日時: 2009-02-17 16:29
static なオブジェクトを Session に保持させてるとか?
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2009-02-17 17:06
> static なオブジェクトを Session に保持させてるとか?

これ、気になりますね。
VBでModule使ってて、それをSessionに持たせてるとか。
けい
常連さん
会議室デビュー日: 2004/12/03
投稿数: 47
お住まい・勤務地: 神奈川県
投稿日時: 2009-02-17 18:47
>Toshi様
URLにセッション文字列は入ってないです。
>King様、どっとねっとふぁん様
StaticなオブジェクトをSessionに保持とはどういうことでしょうか?

なぜSessionを使わないか思い出しました。AjaxMethodを使用するとSessionが無効になるのでCacheで対応してたのです。。だいぶ前に作ったので忘れていました、すみません。



King
ぬし
会議室デビュー日: 2008/06/20
投稿数: 284
投稿日時: 2009-02-17 19:03
静的なオブジェクトを各ユーザの Session に保持させた場合、

ユーザAの Session("AAA") ─┬→ 静的なオブジェクト
ユーザBの Session("AAA") ─┤
ユーザCの Session("AAA") ─┘

と参照するからです。
逆に静的でないオブジェクトを使用する通常の Session の使い方は

ユーザAの Session("AAA") ──→ 静的でないオブジェクト
ユーザBの Session("AAA") ──→ 静的でないオブジェクト
ユーザCの Session("AAA") ──→ 静的でないオブジェクト

という感じです。

> AjaxMethodを使用するとSessionが無効になるのでCacheで対応してたのです。
AjaxMethod というのを良く知らないのですが、
これは
「仕様なのでしょうがない事」
なのか、
「なぜかわかんないけど Session 使えないな、でも Cache だったらなんか動いたからそうしてる」
なのかどちらでしょうか。
前者なら別に良いですが。
けい
常連さん
会議室デビュー日: 2004/12/03
投稿数: 47
お住まい・勤務地: 神奈川県
投稿日時: 2009-02-17 19:41
>King様
ありがとうございます。おっしゃる通りでした。
具体的にはCacheですが、

○:HttpContext.Current.Cache("AAA")=Value(キーが存在しないうちからこれを行っていた)
×:HttpContext.Current.Cache.Insert(key, val, Nothing, DateTime.Now.AddHours(1), Cache.NoSlidingExpiration)

・・・ですよね??

もっと基本的な文法をもっと勉強しなければと思いました。ありがとうございます。
SessionとCacheに関してはサンプルのコードがそのようになってたのでそのまま使ってました。「なんだかわからないけど」系です。すみません。
しかし、おかげでちゃんと動作しているので大丈夫そうです。
助かりました。本当にありがとうございました!!
けい
常連さん
会議室デビュー日: 2004/12/03
投稿数: 47
お住まい・勤務地: 神奈川県
投稿日時: 2009-02-17 19:53
○×が逆でした。すみません。

誤:HttpContext.Current.Cache("AAA")=Value(キーが存在しないうちからこれを行っていた)
正:HttpContext.Current.Cache.Insert("AAA", val, Nothing, DateTime.Now.AddHours(1), Cache.NoSlidingExpiration)
King
ぬし
会議室デビュー日: 2008/06/20
投稿数: 284
投稿日時: 2009-02-17 20:54
私が伝えたい事と全然違うと思いますが・・・

> 最初Sessionで持っていたのですが、同じ現象(データが上書きされてしまう??)なのでCacheに変えてみたのですが同じでした。

という発言に対する突っ込みが

> static なオブジェクトを Session に保持させてるとか?

です。
Cache は何をしてもユーザ毎には作られません。
(どっとねっとふぁんさんが仰ってますよね?)

> しかし、おかげでちゃんと動作しているので大丈夫そうです。

えっ!?
Cache でユーザ毎にデータを持てたのですか?
なぜそんな事が出来るのですか?
(説明出来ないのであれば使わない方が良いです)
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2009-02-18 10:36
ユーザ毎にキャッシュキーを持って、それで判別させたらうまく動いているようにみえる、なんでしょうね。
さて、このプログラムだとキャッシュの保存期間は作ってから1時間ですが、それを超えるようなユーザの操作が行われたとき、、、

まぁ、そういったこともふくめて「ちゃんと動いている」と検証されているのでしょう。

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