多くのユーザーが Google マップを表示する Web アプリを作成しており、サーバーへの ajax リクエストを通じてマップ上の更新が取り込まれます。外部サーバーからデータをスクレイピングする必要があり、2〜3分ごとに更新するだけでよいため、ユーザーに送信される応答をキャッシュしたいと考えています。
したがって、1 人がデータを要求するとすぐに、他のすべてのユーザーからの後続のすべての要求が、次の 2 ~ 3 分間キャッシュから取得されるようにします。このチュートリアルに従って、Heroku を使用して Sinatra で Rack::Cache と Dalli gem をセットアップする方法を詳しく説明しています。次のようにセットアップされたページでテストを実行すると、
cache_control :public, max_age: 3000
キャッシュ ヘッダーが (Google Chrome 開発者ツールを使用して) 正しく取得されていることを確認できますが、更新を押すか、別のコンピューターからページを要求すると、コンテンツが明らかに再生成されました (Time.now 出力を配置しました)。ただし、別のページに移動してから URL を再入力すると、コンテンツは再生成されません。ブラウザは結果をキャッシュしていると思いますが、memcache サーバーはキャッシュしていませんか? キャッシングの仕組みについて根本的な誤解がありますか?