• ベストアンサー

ファイル名の後の"?"の意味は??

いつもお世話になってます。 画像を表示させるページを作成していて、 常に最新の画像を表示させようといろいろ調べていたところ、 (同一ファイル名でランダムに内容が変わる画像です。) 「ブラウザのキャッシュが問題」になるらしく、 <img src="spring00.gif?<%=CDbl(Now())%>"> ↑のように記述すると問題なく常に最新の画像を表示できるらしい。 というところまでわかりました。 ここで質問です。 ファイル名の後の"?"はどんな役割を果たしているのですか? 初心者な質問ですがどうぞよろしくお願いします!!!

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

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

勝手に答えていいですかね(笑) >どうしてファイル名の後にランダムな値を設定すると >最新の情報を表示できるのですか?? 同じ名前で指定(名前=spring00.gif)の場合、再読み込みする必要がない と判断されて、キャッシュから古い画像を読み込んでしまいますが、 毎回違う名前(名前+変数=spring00.gif?○○○)で指定すると、当然ランダ ムな数が付加された新しい指定ですから、キャッシュにはないと判断され、 サーバはそのgifファイルにアクセスすることになります。 その結果、そのページにアクセスするごとに最新の情報が読み込まれるわけです。 ※実は?以降のランダム変数はサーバによってgifファイルに引き渡されますが、 gifファイルは単なる画像のファイルであり、変数を受け入れる仕組みがないため、 この変数自体は無視されます。キャッシュをだますための仕組みと考えてください。

その他の回答 (4)

回答No.5

#3です。100Goldさんのご回答を見て質問を読み返すと、確かに疑問点が 出てきました(T_T;) [#3の解釈] 「常に最新の画像を表示させようと...」という観点で解釈していました。 1.画像を置いてあるディレクトリが1つあって、そのディレクトリの画像 へのリンクを表示ページに書いてある。 2.新しい画像を作成したとき、以前のファイルに上書き保存する。 3.普通に <img src="./image/spring00.gif"> のようなリンクにしている とキャッシュから古い画像が読み込まれるので、困っている ということかと思ったのですが、「同一ファイル名でランダムに内容が変わ る画像です。」とは、どういうことかな?...「ランダム」?? 仮に、ディレクトリが複数あって、それぞれに同じ名前の画像ファイルが おいてある場合のことを考えてみると、わざわざ別に「spring00.gif」と いうプログラムを作らなくても、その表示ページ内でランダム処理をさせ れば、各ディレクトリにランダムにリンクできるかと... sasakidさんの意図していることはどのようなことなんでしょうか...

sasakid
質問者

お礼

lonlysheepさん。 たくさんの回答ありがとうございます。 そして返信が遅くなってすみませんでした。 #3と#5の回答についてお礼をさせていただきます。 ずばり聞きたかった答えは「#3」の内容です。 勝手に変数をつけてもいいのかっ? 変数をつけて呼び出しても何故spring00.gifは呼び出されるのかっ?? そしてどうして最新なのかっ??? という疑問でした。 「変数は無視される」 「ランダムな変数をつけることで呼び出すファイルは常にキャッシュにはない」 と、言うことで疑問はすっきり解消しました。 質問の仕方が悪くてすみません。 『ランダム』と言ったのはspring00.gifファイルが決まった時間に 作成・上書きされるのではないといった意味です。 いろいろとありがとうございました!!

  • 100Gold
  • ベストアンサー率27% (284/1018)
回答No.4

再度ご回答いたします。 lonlysheepさんのご回答のようなテクニックもあるのかもしれませんが、私は別の解釈をしました。 spring00.gifファイルの中身はプログラムなのかなと… 場合によりますが、同一ファイル名でランダムな画像を表示させるのであれば、spring00.gifという名称のプログラムに変数を処理させてその度ごとに別の画像を返すということが可能なので、そのために変数を渡しているのだと思われます。

sasakid
質問者

お礼

100Goldさん。 いつもほんとにありがとうございます。 返信が遅くなってしまってすみません。。。 spling00.gifファイルの中身がプログラム・・・。 毎回違う変数を渡してあげることで、gifファイル自身がその瞬間の画像を返してくれる、ということですか?? ただの画像ファイルだと思ってたんですけど、そんな解釈もあるんですね!! どうもありがとうございました。

  • asz
  • ベストアンサー率16% (1/6)
回答No.2

ttp://www.okweb.ne.jp/kotaeru_reply=1 と ttp://www.okweb.ne.jp/kotaeru_reply=2 ではURLがちがいますよね だから"=1"を呼んだ後でも"=2"はキャッシュに残ってないです。

sasakid
質問者

お礼

aszさん。 回答、ありがとうございます!! キャッシュに残っていないから最新情報なんですね。。 返信が遅くなってすみませんでした。

  • 100Gold
  • ベストアンサー率27% (284/1018)
回答No.1

<%=CDbl(Now())%>の部分はspring00.gifファイルに渡す変数です。 出力時には数字になっているはずです。 ?はURL中でファイルの指定と変数部分を分離する役割をはたしています。

sasakid
質問者

補足

100Goldさん。 いつもありがとうございます!! なるほど、"?"は分離する役割なんですね。 てっきり最新の情報を表示するのに一役買っているのかと思いました。 追加質問してもよろしいですか? どうしてファイル名の後にランダムな値を設定すると 最新の情報を表示できるのですか?? どうぞよろしくお願いします。

関連するQ&A