私は週末のプログラミングにApril Foolのジョークを少し費やしてきたが、私はまだそれが欲しい方法ではうまくいかない。4月の厄介なブラウザのキャッシュがフラッシュするのを拒否する
私はできるだけ変更したくないDrupal 6ベースのWebサイトを持っています。アイデアは、/ filesディレクトリから提供されるすべてのイメージが、イメージを逆さまにしてブラウザに提供する外部Webサーバー(myserver)にリダイレクトされることです。
は、Drupalのウェブサイト(targetserver)他のサーバへの画像のすべての要求をリダイレクトを行うには、次のように私は.htaccessファイルを設定します。
RewriteEngine On
RewriteBase/
RewriteCond %{HTTP_USER_AGENT} !^aprilFool$
RewriteRule ^(.*)$ http://myserver/aprilFool/?url=http://targetserver/files/$1 [R=302,L]
を、これまでそれは素晴らしい作品!私がすべてを有効にすると、April Foolのトリッキーが画像の一部を変更し、クライアントのブラウザに表示されます。
しかし、私は.htaccessの@targetserverを無効にすると、私のブラウザはここ
は/ myserverの上でPerlスクリプトのsnipletある:(それは一時的な冗談であることを意味した実現し、編集した画像を忘れることを拒否aprilFool:
my $ua = LWP::UserAgent->new;
# Identify ourselves through the useragent, to prevent endless redirect loops
$ua->agent('aprilFool');
# Load remote file
my $response = $ua->get($url);
if ($response->is_error) { die "Cannot retrieve document $url\n"; }
my $imageData = $response->content;
# Determine the file's mime type, need that to determine if we want to change it or not
my $ft = File::Type->new();
my $format = $ft->mime_type($imageData);
# If the file is an image, flip it
if ($format =~ m/^image\//) {
my $image=Image::Magick->new;
$image->BlobToImage($imageData);
$image->Flip();
$imageData = $image->ImageToBlob();
}
# Send HTTP headers
print "Content-type:$format\r\n";
print "\r\n";
print $imageData;
私は成功せず、次の試してみた:
- は、スクリプト内の余分なヘッダを追加します。印刷「のCache-Control: MAX-年齢= 36 \ rを\ n "である。
- は.htaccessを@targetserverに行を追加します:ヘッダセットはTMP-image.jpgさまざまな方法、 画像でimage.jpgのために、 "月3月12日午後03時45分00秒CET 2012"
- 変更に名前を期限切れにします。
@myserverしかしtargetserverが、私は手動でブラウザのキャッシュをフラッシュするまで、304 =>「変更されていない」を送信し続けるの.htaccessを無効にした後に.htaccessでのRewriteRuleを変更することによってjpg.tmp。
私の質問は、4月1日を最後の1日だけ、できれば真夜中にするにはどうすればよいのですか...ジョークが終了したら元のイメージをリロードする必要があることをブラウザに認識させるにはどうすればいいですか?
「あなたは意味していない」2012年3月12日15:45:00 CET'。デフォルトについての説明はhttp://blog.ellisons.org.uk/article-58を参照してください。 – TerryE
Expireヘッダーを正しい時刻形式で試してみましたが、どちらも機能していないようです。 – jippie
一方、私はFirefoxについて、cache:device = diskを見つけました。これは基本的にすべてのファイルをキャッシュに表示し、その有効期限/時間を表示します。これは、Cache-Controlヘッダー*が機能していることを証明しました。 Firefoxが画像の有効期限を切るには、新しい/きれいなタブを使用する必要があります。 – jippie