私はちょっとした状況があります。クラウドフレアがリダイレクトをキャッシュしないようにします
ユーザーがアップロードしたメディア(画像操作が適用されている)(usermedia.com)をホストするドメインがあります。メディアはAmazon S3バケットに格納され、Cloudflareはこのバケットの前に座っています。
ユーザーが画像を要求した場合は、https://usermedia.com/my-image-resize-200-200.jpgを参照することがあります。
この画像は、そうでなければアマゾンS3は、リサイズ画像を生成するhttps://app.com/generate/my-image-resize-200-200.jpgに(ルーティング・ルールを介して)302リダイレクトを行いS3にそれをアップロードし、その後、別のバックhttps://usermedia.com/my-image-resize-200-200.jpgにリダイレクトず、それが配信され、存在する場合。今回は、ファイルがS3に存在し、提供されます。
問題は、Cloudflareプロキシが有効になっている場合です。リダイレクトがキャッシュされるため、メディアが存在しない場合、Cloudflareは継続的なリダイレクトサイクルに陥ります。 307リダイレクトを使用しようとしましたが、問題は解決しません。
この問題を回避する方法はありますか?
で同じ問題を抱えて人々を助けるために願っていますか?私はサイトに正確な機能を構築しましたが、AS3ではなくサーバーになっています。 CloudFlareはそれをうまく処理します。次回の画像呼び出しで、ほぼ即座に読み込まれます。 – Jules
Cloudflareではなく、CloudFrontで同様のリダイレクトが設定されていますが、CloudFront> HAProxy(EC2)> S3を使用しています。 HAProxyは403を302に変更し、 'Location:'を設定し、この問題に対処するために 'Cache-Control:no-cache、no-store'を設定します...場所は実際には変更されません。アクションとHAProxyはこれらをResizerサーバーに送信します。その後、リサイザは実際にS3に保存されますが、S3の最終的な一貫性の問題を避けるためにリダイレクトしません。イメージを返すだけです。しかし、私はリダイレクトルールに関する私のメモを取り上げるつもりです。 –
@Julesは良い点を作ります。 S3は、オブジェクトが作成される前に既に 'GET'を行っていて、あなたが意図した通りに、新しいオブジェクトの作成が最終的に一貫しています。 –