0

MVC アプリケーションの SysCache/SysCache2 に問題があります。私の設定は正しいようです。ウェブ上の無数の例と同じように設定しました。

私のクラス Cache.Region("LongTerm").NonStrictReadWrite().IncludeAll(); では、次のように記述しました。これは、アプリケーションキャッシュ用に作成したテストです。

[Test]
        public void cache()
        {
            using (var session = sessionFactory.OpenSession())
            using (var tx = session.BeginTransaction())
            {
                var acc = session.QueryOver<Log>().Cacheable().List();
                tx.Commit();
            }

            var test = sessionFactory.Statistics.SecondLevelCacheHitCount;

            using (var session = sessionFactory.OpenSession())
            {
                var acc = session.QueryOver<Log>().List();
            }

            var test1 = sessionFactory.Statistics.SecondLevelCacheHitCount;
        }

最初のステートメントは、セッション ファクトリの統計 (たとえば 230 レコード) に見られるようにキャッシュされます。私がそれを理解していれば、以下の2番目のステートメントはデータベースではなくキャッシュにヒットするはずです。ここでの問題は、とにかく DB に移動することです。プロファイラーで 100% 確実であることを確認しました。

ここで何が間違っているのかわかりません。誰にもアイデアがありますか?

4

1 に答える 1

3

私はこの問題を解決することができました。それは私のセッションの作成に関係していました。キャッシュに行かないことをトリガーしたリクエストごとにセッションを使用しませんでした。最初にトランザクションを作成しましたが、それはセッション全体を通して続きました。using(var sess = session.SessionFactory.OpenSession()) のようなマークを使用してセッションを再度開いた場合、キャッシュへの入力をトリガーすることができましたが、この解決策は私には合わない回避策にすぎなかったため、セッションの作成方法を変更しましたそもそも、今は正常に動作しています!:)

于 2011-11-08T07:28:16.607 に答える