0

次のように、Rails 3 アプリでのアクション キャッシングに Memcached (実際には、Heroku の Memcachier) を使用します。

caches_action :index, :expires_in => 14.days

問題は、私のアプリが多数の異なるドメインからアクセスされ、コンテンツを変える必要があることです。現在、すべてのドメインで同じようにキャッシュされます。どうすればこれを達成できますか?

4

1 に答える 1

1

Railsのcaches_actionドキュメントには次のように書かれています。

アクションキャッシングは、内部でフラグメントキャッシングを使用し、アラウンドフィルターを使用してジョブを実行します。フラグメントキャッシュは、リクエストのホストとパスに従って名前が付けられます。http://david.example.com/lists/show/1でアクセスされるページは 、david.example.com / lists / show/1という名前のフラグメントになります。これにより、キャッシャーはdavid.example.com/lists/とjamis.example.com/lists/を区別できます。これは、subdomain-as-account-keyパターンを支援するための便利な方法です。

したがって、生成されるキーはドメインごとに異なる必要があります。

それを確認するために、私はアプリケーションを作成し:mem_cache_store、冗長モードでmemcachedサーバーを起動しました(-vv)。

リクエスト/レスポンスは次のようになりましたhttp://localhost:3000/

<21 get views/localhost:3000/index
>21 END
<21 set views/localhost:3000/index 0 0 7123
>21 STORED

別のドメインでhttp://foobar:3000/

<21 get views/foobar:3000/index
>21 END
<21 set views/foobar:3000/index 0 0 7123
>21 STORED

アップデート

リクエストに応じて異なるキャッシュキーを作成したいが、デフォルトでは不十分な場合は、の:cache_pathオプションを使用できますcaches_action

このSOの質問に例があります。

于 2012-09-26T21:15:37.373 に答える