画像が更新されない2

このQ&Aのポイント
  • プログラムを作成しておりますが、画像の更新が反映されない問題について相談です。
  • キャッシュの削除や.htaccessの設定を試しましたが、画像が反映されません。
  • URLにランダムなパラメータを付けると一時的に解決することもあるが、再度問題が発生しています。
回答を見る
  • ベストアンサー

画像が更新されない2

はじめまして。 ご相談したいことなのですが、前回下記の質問をしました。 ************************************************************************** php5 mysql を使用してプログラムを作成しております。 そしてつまずいてしまい2日間解決できずに皆様の力をお借りできればと思います。 フォームを使用し画像を登録するシステムを作っています。 そして画像を変更するシステムを作成しているところで、画像の更新が表示上反映されないのです。 データベース・ティレクトリ内は更新されていて、ページを更新(F5)をするまで画像が反映されないのです。 キャッシュが残っているのかと思い、 <meta http-equiv="Pragma" content="no-cache" /> <meta http-equiv="Expires" content="-1" /> <meta http-equiv="Cache-Control" content="no-cache" /> の記述をしたり 画像を入れているディレクトリに.htaccessを使い Header set Cache-Control "no-cache" Header set Pragma "no-cache" と記述しているのですがまったくダメで困っています。 単純なことかも知れませんがよろしくお願い致します。 ************************************************************************ 上記の質問でURLの後ろにrand関数で?id=***などをつけるとページが更新されるとご回答頂きまして、試したところそのときは無事出来たのですが、また何度かやっているうちに画像が更新されないようになっています。 何か問題があるのでしょうか? 使用しているブラウザの問題なのでしょうか? 何度も同じ質問になってしまい申しわけございませんがよろしくお願い致します。

  • PHP
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=23032&forum=12 こちら、Javaのフォーラムですが、同様の件で不都合が出ているようでした。 結局、HTMLの中のimgタグの中にある画像が、ブラウザが受け取るときに要件のようなキャッシュを残さないようなHTTPヘッダを含んでいないため、キャッシュされるようですね。 なので、フォーラム内の回答のように、 <img src="image.jpg?20090825111111" /> などのように画像にクエリをくっつけてやる必要があるようです。 もしくは、 <img src="image.php?img=gazo.jpg" /> などとして、画像を出力するためのPHPスクリプトを書いてやるとか。 以下サンプルです。 ----image.php-------- <?php if(!isset($_GET['img'])) exit(); $path = "./img/"; $filepath = $path.$_GET['img']; $ext = pathinfo($filepath, PATHINFO_EXTENSION); if(!file_exists($filepath)) exit(); header("Pragma: no-cache"); header("Cache-Control: no-cache"); header("Expires: 0"); switch(strtolower($ext)){ case "jpg": case "jpeg": header('Content-Type: image/jpeg'); break; case "gif": header('Content-Type: image/gif'); break; case "png": header('Content-Type: image/png'); break; default: header('Content-Type: image/jpeg'); break; } readfile($filepath); ?>

taabooo
質問者

お礼

とても丁寧にソースまで頂き本当にありがとうございます。 無事思い通りできるようになりました。 ?un=<? print rand(10,99); ?> このソースをイメージの後ろにつけて完璧にできたかと思います。 URLの後ろにパラメータをつけるのは普通にやっていたのですが、イメージパスの後ろにもつける事が出来るなんて考えもしなかったです。 本当に勉強になりました。 ありがとうございます。

関連するQ&A

  • 画像が更新されない

    はじめまして。 ご相談したいことなのですが、 php5 mysql を使用してプログラムを作成しております。 そしてつまずいてしまい2日間解決できずに皆様の力をお借りできればと思います。 フォームを使用し画像を登録するシステムを作っています。 そして画像を変更するシステムを作成しているところで、画像の更新が表示上反映されないのです。 データベース・ティレクトリ内は更新されていて、ページを更新(F5)をするまで画像が反映されないのです。 キャッシュが残っているのかと思い、 <meta http-equiv="Pragma" content="no-cache" /> <meta http-equiv="Expires" content="-1" /> <meta http-equiv="Cache-Control" content="no-cache" /> の記述をしたり 画像を入れているディレクトリに.htaccessを使い Header set Cache-Control "no-cache" Header set Pragma "no-cache" と記述しているのですがまったくダメで困っています。 単純なことかも知れませんがよろしくお願い致します。

    • ベストアンサー
    • PHP
  • HTMLの画像自動更新について

    現在、 <meta http-equiv="Refresh" content="5">で自動更新をしているのですが、 毎回同じ画像が表示されてしまいます。 F5を押すと画像は更新されます。 キャッシュに問題があるのではと調べて下記のように書きました。 <HTML> <HEAD> <meta http-equiv="Cache-Control" content="no-cache"> <meta http-equiv="Pragma" content="no-cache"> <meta equiv="Expires" content="-1"> <meta http-equiv="Refresh" content="5;URL=index_i_i.html"> URLの「index_i_i.html」は同じHTMLファイル(名前は変えて)を用意して交互に飛ぶように設定しました。 ですが、上記の記述でも同じ画像が表示されます。 F5では更新されるのですが、F5と同じ更新をHTML内に記述するにはどうしたらよろしいのでしょうか? できれば、CGIやスクリプトは使いたくないのですが、使わなくてはいけないのであれば、教えてください。 お願いします。

    • ベストアンサー
    • HTML
  • MACのsafariでCGIを動作した場合、リロードボタンを押さないと更新されません。教えて下さい。

    MACのsafariでCGIを動作した場合、リロードボタンを押さないと更新されません。教えて下さい。 今perlを使ってスケジュール管理を作っていますが、IEでは、ちゃんと動作します。HTMLに <HEAD> <meta http-equiv="Pragma" content="no-cache"> <meta http-equiv="Cache-Control" content="no-cache"> <meta http-equiv="Expires" content="0"> </HEAD> と記述し、キャッシュを無効にしてみたのですが、 どうしてもsafariだと新規でスケジュールを入力したものがカレンダーに反映されません。 これは、HTML記述では、キャッシュを無効に できないのでしょうか? 教えて下さい。

    • ベストアンサー
    • Perl
  • .htaccessでサーバエラー

    今までは.htaccessに <Files ~ "\.(pdf|html)$"> Header set Pragma no-cache Header set Cache-Control no-cache </Files> 上記の記述をして運用していたのですが、レンタルサーバを契約更新して 新しいサーバに移動してからサーバエラーがでてしまい、HPが閲覧不可となります。 この記述を外すと正常に動作します。 しょうがないのでHTML単位で制御しようと <meta http-equiv="Pragma" content="no-cache"> <meta http-equiv="Cache-Control" content="no-cache"> <meta http-equiv="expires" content="0"> 上記をheadに記述していますが、効果なくキャッシュされてしまいます。 どうにか.htaccessを使う様にできますか?これはサーバ側の仕様でしょうか・・・ サーバはOCNのBizメール&ウェブ ビジネス のホスティングサービスを利用しています。 レンタルサーバ契約時のhtaccess初期記述内容 Options -Indexes SetEnv TZ JST-9

    • ベストアンサー
    • CGI
  • CGIで画像更新??

    初めて投稿します。 短い間隔でサーバに送られてくるJPEG画像をcgiか何かを使って一定間隔で更新するホームページを作りたいのですが・・・ 数少ない知識を使っては見たのですが、 META content="text/html; charset=shift_jis" http-equiv=Content-Type META http-equiv="refresh" content="20" META HTTP-EQUIV="Pragma" CONTENT="no-cache" これだと、リロードの時に画像が上から表示されるので、シャッターを切っているみたいで使用できないと言われてしまいました。 特に言語は問いませんので宜しくお願いします。

    • 締切済み
    • CGI
  • 画像をキャッシュさせたくない

    CGIで動的に画像を表示するため表示した画像をキャッシュさせたくないのですが、どうすればいいのでしょうか。 他のページなどを参考に <meta http-equiv="Pragma" content="no-cache"> <meta http-equiv="Cache-Control" content="no-cache"> <meta http-equiv="Expires" content="0"> をヘッダーに入れてみましたし、リダイレクトしたURLの後ろに無意味なランダム数字を入れても見ましたが、やはりキャッシュされています。 たとえキャッシュされていても無視して読み込むようなヘッダーとか何か確実に新たに読み込む方法はないでしょうか。

    • ベストアンサー
    • HTML
  • 3日に1回リロードさせたい

    ページの情報を更新したときに、ブラウザのキャッシュの影響でページが更新されないことがあります。 cssが読み込まれていなかったり、htmlの変更が反映されていなかったり、 そのときはF5でリロードさせることで更新を反映させています。 ユーザーが自分でリロードを実行することなく、 自動的に更新させる方法を探しました。 <meta http-equiv="Pragma" content="no-cache"> <meta http-equiv="Cache-Control" content="no-cache"> <meta http-equiv="Expires" content="-1"> この方法だとキャッシュを削除することができ、 複数のブラウザにも対応できるそうですが、 キャッシュを毎回削除してしまうと ページを開く度に重くなってしまいます。 3日に1回、更新させる、ということはできませんか? <meta http-equiv="expires" content="Sat, 15 Nov 2012 12:00:00 GMT"> を <meta http-equiv="expires" content="Sat, 18 Nov 2012 12:00:00 GMT"> <meta http-equiv="expires" content="Sat, 21 Nov 2012 12:00:00 GMT"> のように3日ごとに更新するしかないのでしょうか。

  • 緊急!!広告バナーとキャッシュサーバーの関係

    とても今困っています。 HTML(smarty使用)であるページを作成しています。 ヘッダー部にJavaScriptで新しい広告バナーを貼り付けたのですが、 キャッシュサーバーの関係で、反映されず、以前の広告バナーが出てしまいます。 Ctrl+F5などのページ更新をすれば新しい広告バナーに変わるのですが・・・・・・。 <meta http-equiv="Pragma" content="no-cache"> <meta http-equiv="Cache-Control" content="no-cache"> <meta http-equiv="Expires" content="1"> などもhead部に入れてみましたが、駄目でした。 サーバーの設定ファイルを変更するしかありませんか? 出来れば、他の画像・動画もある為に、あまりキャッシュ機能は外したくありません。 よろしくお願いします。

  • ブラウザの自動更新について

    ブラウザの自動更新について質問させていただきます。 <meta http-equiv="Pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="以前の時間"> 古いキャッシュを読まずにブラウザに新しいページを読みたい時、上のブラウザごとに異なる?3種類の対応方法があるかと思いますが、これらは適切な方法でしょうか。 例えばyahooのトップページは上の方法を使わずに自動更新しているようですが、上記のmetaは埋め込まれていませんでした。また他の多くのポータルサイトもそうでした。どのように自動更新しているのでしょうか。 どのようにすれば、更新ボタンを押さずに更新できるのか、また自動更新の際、上記のmetaを使ったほうがいいのか、それともyahooのように別の方法を使ったほうがいいのか、教えていただけないでしょうか。 初心者の質問で、質問内容が乱れてしまいましたが、どうぞよろしくお願いいたします。

  • このタグがいつからブラウザに採用されたのか

    <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> <META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">  ↑たとえば、このようなタグがありますが、こういう   書き方は IE, ネスケ など、いつのバージョンから   採用されたのか、とかわかる方法はないでしょうか。

    • ベストアンサー
    • HTML

専門家に質問してみよう