4

多くのパーシャルをレンダリングするページがあります。それらすべてをフラグメントキャッシュするため、非常に高速になります。ほら!

問題は、パーシャルの量が原因で、キャッシュを書き込むときの最初の実行に時間がかかり、リクエストのタイムアウトが発生することです (ただし、他の時間は非常に高速です)。

私もsidekiqを使用しています(ただし、質問はバックグラウンドプロセッサに関連しています)

これらのパーシャルをバックグラウンド プロセスで保存して、(期限切れのために) キャッシュを逃したユーザーがタイムアウトにならないようにする方法はありますか? したがって、すべてのパーシャルを調べて、キャッシュが期限切れになった (または間もなく期限切れになる) ものを再キャッシュしますか?

4

2 に答える 2

0

私はいくつかのプロジェクトに取り組んでいて、同様の問題がありました。実際には、どのページだけの問題であり、キャッシュを消去した直後の読み込みの問題でした。別の方法で解決しました(sidekiqのようなものはなかったので、適切な解決策ではないかもしれませんが、役立つかもしれません)

私がしたことは、キャッシュをクリーンアップした直後に呼び出されたopen()メソッドで、問題のある URL を次のようなパラメーターとして配置することです。

open('http://my-website/some-url')

そのため、キャッシュを消去した後、その URL が呼び出され、新しいキャッシュが自動的に作成されます。その方法で私たちはその問題をすぐに解決しました。一部のバックグラウンドワーカーがより良い解決策になることは知っていますが、私にとってはうまくいきました.

言うまでもなく、私たちのキャッシュは手動ではなく cron によってクリーニングされていました。

アップデート

または、キャッシュを手動でクリーンアップしたい場合は、キャッシュ呼び出しをクリーンアップした後でもopen('http://my-website/some-url')、sidekiq を使用できます (私はこれを試しませんでした。これは単なるアイデアです)。

もちろん、私の問題は 1 つのページだけにありましたが、Web サイト全体が必要な場合は、事態が複雑になります。

于 2014-10-23T10:19:52.753 に答える
0

私はpreheat gemしか知りませんが、それでも私のニーズには十分に複雑ではないと思います。さらに、それは何年もの間維持されていません。

于 2014-10-23T10:28:01.767 に答える