1

Asp.net Web アプリケーションにキャッシュを実装する必要があります。別の ID でデータを保存する必要があります。では、どの方法が良いのでしょうか?

  1. ディクショナリ変数を使用します。データを挿入します (キーを ID として、データを値として)。

        Dim mDict As New Dictionary(Of String, String)
        mDict .Add(bID, uwtTree.WriteXmlString(True, True))
        Cache.Insert("mTree", mDict) 
    

    それをキャッシュ変数に追加します。キャッシュ変数にアクセスする

         If Not Cache("mTree") is Nothing Then 
            'cast to dictionary and check ID exists , if exsitis get the data
         End iF
    
  2. 異なる ID にキャッシュ変数を使用する

         Cache.Insert(ID,data)
          ' each insertion for each ID
         If Not Cache(ID) is Nothing Then 
            ' get the data. '
         End IF
    

どの方法が最善の方法ですか? または、他の方法が存在しますか?.Net 3.5 /IIS 7 (VB.Net) を使用しています。前もって感謝します

パフォーマンスとメモリの最適化を改善する方法

4

1 に答える 1

3

文脈がなければ、どちらが「優れている」とは言えません。

ただし、ディクショナリをキャッシュに入れる場合 (オプション 1)、それがスレッド セーフなディクショナリ (.NET 4 ConcurrentDictionary など) であることを確認することをお勧めします。

2 つのアプローチの最も明白な違いは、オプション 1 では、キャッシュ アイテムの有効期限が切れると、すべてのアイテムが一度に削除されるディクショナリになります。オプション 2 では、個々のアイテムが個別に期限切れになります。

コメントに応えて:

私はxmlデータを持っており、文字列としてキャッシュ(データキャッシュ)に保存します。XmlObject として保存すると違いはありますか?

私が見る主な違いは次のとおりです。

  • 文字列は不変であるため、アクセスするときにスレッドセーフについて心配する必要はありません。XML オブジェクトは不変ではないため、キャッシュから取得したオブジェクトを変更しないようにする必要があります (またはロックを使用して、そのような変更がスレッドセーフであることを確認してください)。

  • 文字列を格納すると、おそらくキャッシュから文字列を取得するたびに XML オブジェクトに解析されるため、パフォーマンスが低下する可能性があります。

于 2012-05-14T15:46:03.813 に答える