0

サイトのメイン画像を常に更新する必要があります。ユーザーはサイトにアクセスしますが、手動で更新しない限り、画像は更新されたバージョンになりません。「更新された画像を表示するには更新を押してください」と入力しても、ユーザーはこれを無視し、更新ボタンを押すために電子メールを送信する必要があります。このようなJavascriptを使用して、最初のindex.htmlを実際のサイトにリロードしようとしました

最初の index.html:

document.location.href='index2.php?code=reload_page'

次に index2.php で:

$the_code = $_GET['code'];

  if($the_code == "reload_page")
    {
     $page = $_SERVER['PHP_SELF'];
     $sec = "1";
     header("Refresh: $sec; url=$page");
    }
  else
    {
      //load page regular
    }

このように試してみましたが、うまくいきませんでした。更新ボタンを押すまで、古い画像が残っています。PHPまたはjavascript/jqueryを使用してこれを達成する他の方法はありますか?

4

3 に答える 3

3

画像が更新されない問題は、Web ブラウザーまたはサーバー プロキシなどのキャッシュの問題である可能性があります。これは構成の問題であり、ユーザーに依存していない可能性があります。これを回避する簡単な方法は、img URL にタイムスタンプを追加することです。コンテンツを再生成するたびに、次index.phpのようにクエリ文字列を画像に追加するだけです。

<?php
echo '<img src="my_image.png?ts='.time().'" />';
?>

別の画像であると偽ってブラウザとプロキシを騙し、キャッシュを防ぎます。

于 2012-06-09T11:17:47.593 に答える
1

タイマーを使用して画像をリロードし、他のページから AJAX リクエストを介して取得できます。

setInterval(function(){ 
  $.ajax({
    url: 'index2.php'
  }).done(function ( data ) {
    $('#image-div').html(data);
  }); 
}, 10000); // wait 10 seconds

jQuery.ajaxを見てください。

于 2012-06-09T11:14:18.847 に答える
1

以下をページの head セクションに配置すると、コンテンツが 5 秒ごとにリロードされます。

<meta http-equiv="refresh" content="5">

URL が変更されていないためにブラウザーがまだ画像をキャッシュしている場合は、画像 URL の末尾にランダムなクエリ文字列を配置します。タイムスタンプを使用できます。

<img src="image.jpg?<?php echo time(); ?>">
于 2012-06-09T11:18:50.520 に答える