BEAR.QueryRepositoryというパッケージをpushしました。
CQRSと言われるアーキテクチャパターンのごく基本的な部分だけをAOPで実装していて、利用コードの変更なしに、リソースは読み込み と書き込みの保存先を分けるようになります。
副作用のある操作(GET以外のリクエスト)があればメソッドに束縛されているCommandInterceptorが読み込み用のレポジトリにあるエントリーを破壊し再生成します。
コンテンツのキャッシュをTTL(時間)ではなくて、リソースのリクエストによって更新することが可能になります。
キャッシュは作成するのは簡単ですが、破壊が難しくこの問題を解決するためのものです。
生成された読み込み専用のレポジトリーのエントリーにはHTTPキャッシュと同じように、エンティティタグと更新日時がヘッダーとして付加されそのままHTTPキャッシュとする事が可能です。
Doctrine cacheを使っていますが、想定しているのは通常の揮発性の高いキャッシュではなく、RedisなどのKVS(MySQLも可)など永続性のあるストレージです。