Chromeはダウンロードしたファイルをキャッシュしますか?


4

かなり奇妙です。

私のWebアプリケーションでは、S3に保存されているスプレッドシートへのリンクがあります。 私は以前にそのファイルをダウンロードしました。さて、私はs3でそのファイルを更新しました。

同じリンクから再度ダウンロードしようとしたときに、以前のバージョンがまだ取得されています。

キャッシュをクリアすると、新しいバージョンがダウンロードされます。


キャッシュは頻繁に削除されますが、ファイルは既にキャッシュされている可能性が高いです。
MilanorTSW

どういうわけか、10時間経っても消えない。たぶん私はそのリンクを1日に10回か15回ダウンロードしたので、Chromeはそれを長期間キャッシュするのが役に立つと考えています。私はキャッシュをクリアしました、それは今働いています。私はこれを「リリースノート」するべきだと思います。
thinkanotherone

なにが HTTPの有効期限とキャッシュ設定 S3上のファイルにリンクしているWebアプリケーションのページの場合
Ƭᴇcʜιᴇ007

回答:


2

これを回避するには2つの選択肢があります。

  1. 設定方法をAmazonに伝えることができます Cache-Control URLが取得されたときのヘッダー。あなたが指定するのと同じ方法 Content-Type ヘッダ、他のヘッダも制御できます。あなたはもっと短い時間間隔にキャッシュを下げることができます。

  2. S3上のファイルにリンクするWebページのキャッシュを制御し、ファイルが変更されたときにその内容がキャッシュから使用されないようにS3ファイルへのリンクを変更することができます。基本的には、あなただけを置くことができます ?version=1 URLの末尾に。に変更すると ?version=2 (など)、URLが正確に一致しないため、ブラウザはキャッシュされたバージョンのファイルを使用しません。

この2番目の方法では、S3ファイルで積極的なキャッシュを使用し、無駄な転送を回避できます。ただし、ファイルの内容を変更するたびに、ファイルにリンクしているすべてのWebページを変更する必要があります。

見る Amazon S3の請求書を引き下げる 両方の手法の詳細については、反対の効果を得ようとしていますが。


1

はい、そうです。 S3をストレージとして使用していなくても、同じ問題が発生します。私はダウンロードのためにローカルファイルの内容を提供するSymfony2アプリを持っています。私はPHPでファイルの内容を取得してブラウザに送信しているので、URLは常に同じです。ローカルファイルの内容を変更した場合、FirefoxとIEには最新のファイルバージョンが表示されますが、chromeには含まれません。キャッシュコントロールヘッダーを設定しようとしましたが、無駄です、Chromeは無視します。

私が使用しているヘッダのいくつかのアイデア:

$response->headers->addCacheControlDirective('no-cache', true);
$response->headers->addCacheControlDirective('max-age', 0);
$response->headers->addCacheControlDirective('must-revalidate', true);
$response->headers->addCacheControlDirective('no-store', true);

ランダムなバージョン番号をURLに追加すると(?version = randomIntByTime)、Chromeはついにファイルの最新バージョンを保存します。 Chrome用の特別なコードを書くのはいらいらします。


0

いいえ、しかしあなたとS3の間に別のキャッシングデバイスがある可能性があります。 WebトラフィックをキャッシュするMicrosoftのISAサーバーのように、私はそれがこの種のことを何度もしているのを見ました。


私は私の自宅のDSL接続から接続しています。
thinkanotherone

そうですね、私はあなたがISAサーバーを持っていないと思います!しかし、同じ要求に対してIEまたはFirefoxを使用して、Chromeがそれをキャッシュしているという理論を簡単にテストできます。またはChromeのキャッシュをクリアするだけです。
Coding Gorilla

やった。しかし、私は内側の働きを知っている人を望んでいたと思います。
thinkanotherone
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.