- - PR -
ASP.NETのキャッシュについて
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2006-11-17 15:58
初めて投稿します。よろしくお願いします。
ASP.NET(VB.NET) VisualStdio2005 .NET Framework 2.0 で開発を行っています 自作のオブジェクト(objData)をキャッシュに格納して、 プログラム内の任意の部分で値を取得したいと考えています。 ソースは抜粋すると以下のような感じです。 Private Sub Page_Load() If Not IsPostBack Then 'objDataにデータを挿入しておく Cache.Insert("test", objData, Nothing, Caching.Cache.NoAbsoluteExpiration, TimeSpan.FromMinutes(30)) Call fncTest() End If End Sub Protected Sub Button1_Click() 'objDataにデータを挿入しておく Cache.Insert("test", objData, Nothing, Caching.Cache.NoAbsoluteExpiration, TimeSpan.FromMinutes(30)) End Sub Protected Sub Button2_Click() Dim objTest As New clsData objTest = CType(Cache.Get("test"), clsData) ・・・@ End Sub Private Sub fncTest() Dim objTest As New clsData objTest = CType(Cache.Get("test"), clsData) ・・・A End Sub objDataには何らかのデータが入っていてNothingではないとして、 @やAのタイミングで値を取得しようとすると、値が正常に取得できる時もあれば、Nothingで返る時もあります。 また、@ではButton2を1回クリックした時にNothingになる時もあれば、何回もクリックしているとNothingになる時もあります。 以前にVisualStdio2003 .NET Framework 1.1で同様の処理を行った時は、常に正常に返ってきていたし、 今回も取得できる時とできない時があるので混乱しています。 どなたかご教授お願いします。 |
|
投稿日時: 2006-11-18 22:14
そもそもCacheは有効期限設定していても、確かメモリ不足時に消える可能性があったと記憶してます。よって原則として、
(1)Cacheから値を取り出す (2)NothingだったらCacheを再構築する という手順で利用するものだったのでは?(違ってたらごめんなさい) #あと、@Aの直前の各行は New する必要ないけど。。。 |
|
投稿日時: 2006-11-20 10:25
回答ありがとうございます。
現在、各担当者が自分の端末のASP.NET開発サーバーorIIS経由で開発を行っていますが、 同じ処理を流しても、1度もNothingで返ってこない端末もあります。 これも単純にマシンスペックの違いということでしょうか。 やや釈然としませんが、本サーバーがやってくるのを待って再度検証してみようかと思います。 |
|
投稿日時: 2006-11-20 13:42
さっき、通称「赤間本」を見てみましたが、Cacheについては上に書いたとおりだったので、実装がまずいと思います。.NET Framework1.1でうまく行ってたのはたまたまなのでは?
この本、相当イイ本ですので一読をおすすめします。 http://www.atmarkit.co.jp/fdotnet/entwebapp/index/index.html |
1