5

私のサイトは面白い画像サイトになるように設計されています。ユーザーがランダム ボタンを押すと、同じページの PHP コードが新しいランダム画像を生成します。これが本来の動作方法です。ただし、新しい画像を取得するには F5 ボタンを押す必要があります。

私は別の質問を読んでいて、リンクの最後に生成された日付と時刻のクエリ文字列を使用してブラウザのキャッシュを回避しているということを読んでいましたが、一生それを理解することはできません。

私はphpがあまり得意ではないので、基本的なWebページ構造しか知らないかのように話してください. ありがとうございました!

4

3 に答える 3

5

あなたが説明しているものはキャッシュブレーカーと呼ばれ、通常はランダムな文字列または URL に追加されたタイムスタンプです。画像を参照するときは、次のように先頭に追加します。

echo get_random_image_url() . '?' . time();

これにより、次のような URL が生成されます。

http://your.server.com/random.jpg?1355862360

注:get_random_image_urlこれは一例ですが、お分かりいただけると思います。

このスレッドは興味深いかもしれません: How to force a web browser NOT to cache images .

于 2012-12-18T19:20:38.800 に答える
1

ヘッダーを使用することは、URL トリックよりも優れていると思います

<?php
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
?>

http://php.net/manual/en/function.header.php

于 2012-12-18T19:23:08.867 に答える
0

解決するのは非常に簡単です。たとえば、次の 2 つのリンクを確認してください。

http://cdn.arstechnica.net/wp-content/uploads/2012/10/06_Place_20773_1_Mis.jpg

http://cdn.arstechnica.net/wp-content/uploads/2012/10/06_Place_20773_1_Mis.jpg?randomValue

2 つのリンクの両方で同じ画像が開きます。

これがあなたの解決策です!画像ファイル名の最後にランダムな値を追加する必要があります:

image.png?<?php echo someRandom();?>

ランダムな値を生成する関数を作成する方法については、このコミュニティまたは Google を参照してください。

また、 を使用したソリューションもあります。次のように仮定します。

<img id="funny" src="scripts/php_rand_image.php" />
<a href="javascript:changeImage('funny')">Get another image</a>
<script>
function changeImage(ob){
image = document.getElementById(ob)
d = new Date();
image.src = image.src+'?'+d.getTime();
}
</script>
于 2012-12-18T19:21:32.057 に答える