Rails のcaches_action
メソッドを Redis と共に使用して、共通ページのキャッシュを実装します。これは非常に動的なサイトであるため、異なる URL パラメーターを持つページはキャッシュ内で区別されたままにする必要があります (例: ?page=1
vs ?page=2
)。ただし、URL が一致する限り、コンテンツをキャッシュして複数の訪問者に提供できます。
トラフィックの大部分が Adwords 広告から来ているため、多くのユーザーがURL にgclidパラメータを含むページにアクセスしていたため、キャッシュが役に立たなくなりました。一意の URL を識別するために使用されるキャッシュ パスから gclid を除外することで、この問題を回避しました。
caches_action :search,
:expires_in => 10.minutes,
:cache_path => Proc.new { |c| c.params.except('gclid') }
これはしばらくの間うまくいきましたが、キャッシュしていた HTML に以前のアクセスからの gclid パラメータを含む内部リンクが含まれていたため、Analytics データがオフになっていることに気付きました。
したがって、これに対する解決策は非常に簡単です。リンクを生成するたびにgclid
、次のように手動で除外する必要があります。
link_to 'some page', params.except('gclid')
gclid
私の質問は:生成されたすべてのリンクから自動的に除外する方法はありますか? サイト全体でこれを手動で行う必要がないことは非常に便利です。