2

アドビ コミュニティ フォーラムに同様の質問を投稿しましたが、ここでも質問するように提案されました。

特定のデータベースに関連付けられた個別のクエリをキャッシュしようとしていますが、キャッシュされた他のクエリをそのまま残しながら、そのデータベースのすべてのクエリをフラッシュできる必要があります。そこで、ColdFusion の ehcache 機能を利用することにしました。この特定のデータベースからのクエリに使用する特定のキャッシュ リージョンを作成したので、cacheRemoveAll(myRegionName) を使用してそれらの保存されたクエリをフラッシュできます。

それぞれの個別のクエリをキャッシュして簡単に取得できるようにする必要があるため、クエリ パラメータを一意の文字列にハッシュして、各クエリのキャッシュ キーに使用することにしました。これまでに試したアプローチは次のとおりです。

  1. パラメーターのキーと値のペア (パラメーター名、パラメーター値) を含む Struct を作成します。
  2. SerializeJSON() を使用して構造体を文字列に変換します。
  3. Hash() を使用して文字列をハッシュします。

このアプローチは理にかなっていますか?他の人がキャッシュキーの生成にどのようにアプローチしたのか疑問に思っています。また、「MD5」アルゴリズムはこの目的に適していますか?それは一意のキー生成を保証しますか?それとも「SHA」を使用する必要がありますか?

4

1 に答える 1

3

更新: cacheRegionCF10 で導入された属性を使用!

http://help.adobe.com/en_US/ColdFusion/10.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-7fae.html

cachedAfterあとはorを指定するcachedWithinだけで、一意のキーを生成する方法は忘れてしまいます。CF は「ハッシュ」によってそれを行います。

  • クエリ「名前」
  • SQL ステートメント
  • 情報源
  • ユーザー名とパスワード
  • DBTYPE

参照: http://www.coldfusionmuse.com/index.cfm/2010/9/19/safe.caching

キーで特定のクエリをフェッチする必要がない限り、これが最も簡単だと思いますcacheID.CF10で導入された別の新しい属性を使用して、独自のハッシュをフィードできます.

于 2012-12-22T00:29:59.553 に答える