2017-02-16 6 views
2

私はモジュールを使ってColdBoxアプリケーションを開発しており、しばらくの間、ビューをキャッシュするためのキャッシング機能を使いたいと思っていました。ColdBoxアプリケーションのrenderView()のcacheTimeout設定が無効なのはなぜですか?

component{ 
    property name="moduleConfig" inject="coldbox:moduleConfig:mymodule"; 

    ... 

    function widget(event, rc, prc){ 
    var viewData = this.getData(); 

    return renderView(
     view = "main/widget", 
     args = viewData, 
     cache = true, 
     cacheSuffix = ":" & moduleConfig.entryPoint, 
     cacheTimeout = 2 
    ); 
    } 
} 

私は私のCachebox.cfcに次の情報を追加することにより、デフォルトのキャッシュ設定を設定しようと上記のコードからcacheTimeoutを削除:

cacheBox = { 
    defaultCache = { 
    objectDefaultTimeout = 1, //two hours default 
    objectDefaultLastAccessTimeout = 1, //30 minutes idle time 
    useLastAccessTimeouts = false, 
    reapFrequency = 5, 
    freeMemoryPercentageThreshold = 0, 
    evictionPolicy = "LRU", 
    evictCount = 1, 
    maxObjects = 300, 
    objectStore = "ConcurrentStore", //guaranteed objects 
    coldboxEnabled = false 
    }, 

    caches = { 
    // Named cache for all coldbox event and view template caching 
    template = { 
     provider = "coldbox.system.cache.providers.CacheBoxColdBoxProvider", 
     properties = { 
     objectDefaultTimeout = 1, 
     objectDefaultLastAccessTimeout = 1, 
     useLastAccessTimeouts = false, 
     reapFrequency = 5, 
     freeMemoryPercentageThreshold = 0, 
     evictionPolicy = "LRU", 
     evictCount = 2, 
     maxObjects = 300, 
     objectStore = "ConcurrentSoftReferenceStore" //memory sensitive 
     } 
    } 
    } 
}; 

もののいずれかを持っていませんでしたキャッシングへの影響また、上記の設定をColdbox.cfcに追加しようとしました。

私はcoldbox create app MyApp経由CommandBoxを経由して、完全に新しいテストアプリケーションを作成する場合でも、その後、わずか1分にCachebox.cfcにキャッシュを設定し、Coldbox.cfcにviewCaching = trueを設定し、Main.cfcにevent.setView(view="main/index", cache=true)を設定し、それはdoesnの期待どおりに動作しません。

私が何をしても、ビューは常に少なくとも5分間キャッシュされます。

紛失しているものがありますか?

+0

ビューがキャッシュされている時間をどのように確認していますか? –

+0

この質問はCFMLスラックチームにクロスポストされているので、私はあなたに返答しました(私は再現できません)。残念ながら、あなたの問題が何であるか把握したら、SOが本当に前後のQ&Aに適しているので、ここで答えを更新することができます。 –

答えて

1

ColdBox設定で表示キャッシュを有効にしていることを確認してください。 /config/ColdBox.cfcファイルに移動し、このキーを追加します。

coldbox = { 
    // Activate view caching 
    viewCaching = true 
} 

はまた、あなたが上記のキャッシングに変更CFCの名前の入力を間違えたのか?これらの変更は、/config/ColdBox.cfcではなく、/config/CacheBox.cfcファイルに記述する必要があります。

+0

いいえ、 'viewCaching = true'はこれを変更しません。私は最初に '/ config/Cachebox.cfc'に設定をしてから、'/config/Coldbox.cfc'にテスト目的のために移動しました。ビューは常に5分間キャッシュされます。私はその情報で私の質問を更新しました。 –

0

/config/ColdBox.cfcreapFrequencyも、キャッシュエントリを早期に削除するためには、明らかに小さい値に設定する必要があります。

documentation statesとしてけれども、:

享受キャッシュを生成するために、数分の遅れ(保証されません)

これは、その時間の後に、それは本当に削除、キャッシュされたアイテムのことを保証するものではありませんreapFrequency1に設定されていても、3分後にキャッシュが空になることがあります。

関連する問題