1

grails 1.3.9アプリケーションでのehcacheのデフォルト値は何ですか?特に、クエリキャッシュ値に興味があります。postgresのpsqlを使用していくつかの行を削除しましたが、変更がアプリに反映されていません。ehcache.xmlファイルをconfディレクトリに追加していません。grailsアプリを再起動しても、データはレポートに表示されます。回避策として削除できるキャッシュファイルはありませんか?

更新:次のehcache.xml構成ファイルを追加しました:

<?xml version="1.0" encoding="UTF-8"?>
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="ehcache.xsd" >
<diskStore path="/tmp/ehcache_t2"/>
<cacheManagerEventListenerFactory class="" properties=""/>
<defaultCache
   maxElementsInMemory="10000"
   eternal="false"
   timeToLiveSeconds="120">

</defaultCache>
<cache name="org.hibernate.cache.UpdateTimestampsCache"
  maxElementsInMemory="10000"
  timeToIdleSeconds="300"
   />
<cache name="org.hibernate.cache.StandardQueryCache"
  maxElementsInMemory="10000"
  timeToIdleSeconds="30"
   />
</ehcache>

ただし、StandardQueryCacheのtimeToIdleSeconds="30"も機能していません。

4

1 に答える 1

1

Grails は conf ディレクトリで ehcache.xml を探します。見つからない場合は、クラスパスにあるものを使用します。ehcache-core.jar を見てください。ehcache-failsafe.xmlという名前のファイルが表示されます。

<defaultCache
            maxElementsInMemory="10000"
            eternal="false"
            timeToIdleSeconds="120"
            timeToLiveSeconds="120"
            overflowToDisk="true"
            maxElementsOnDisk="10000000"
            diskPersistent="false"
            diskExpiryThreadIntervalSeconds="120"
            memoryStoreEvictionPolicy="LRU"
            /> 

クエリ キャッシュを利用するには、Datasource.groovy で次のように構成する必要があります。

hibernate {
    cache.use_second_level_cache=true
    cache.use_query_cache=true
    cache.provider_class='org.hibernate.cache.EhCacheProvider'
}

ただし、@GreyBeardedGeek が指摘したように、EhCache はライトスルー キャッシュです。休止状態とその第 2 レベルのキャッシュを介して操作されるオブジェクトのみをキャッシュします。データベースに SQL クエリを記述しても、オブジェクトはキャッシュにキャッシュされません。

それについてより深く理解するには、こちらこちらをご覧ください。

于 2012-08-10T14:50:49.593 に答える