• 締切済み

カゴ購入ボタンで不思議な現象があります!

添付画像参照。 ネットショップを営んでいます。 販売中は甲の表示をしています。 売り切れると乙表示になります。 乙の「売切」は画像ファイル.gifです。私がソースを書き換えています。<IMG src="...gif"> 売り切れ表示をした後、お気に入りに登録しているサイトを表示させて売り切れ表示の確認を行なっています。 ところがお客さんからは、たまに注文が入る場合があります。 甲でないとカゴボタンが無いので注文できないはずなのに・・? キャッシュというのも内容は最新の表示ですよね? 私がお気に入りから確認するのもキャッシュが働いていると思います。 (質問) どうして乙表示なのに、たまにお客さんから注文が入るのでしょうか? お詳しい方が居られましたら、宜しく願います。

みんなの回答

  • wek00
  • ベストアンサー率61% (91/147)
回答No.14

このサイトの過去logに、ブラウザがなぜかキャッシュを見に行くようになってしまったという事例がありました(すぐ見つかりますよ)。 > 私に学習させないで解りやすく解説して下さい。 おかしな客ばかりで毒されてしまったのでしょうか。お気をつけください。卑しい根性をさらけ出してしまうと、あなたの要求に応えられるプロ級の方がいらしても回答する気をなくしてしまうでしょう。

kfjbgut
質問者

補足

>卑しい根性をさらけ出してしまうと、あなたの要求に応えられるプロ級の方がいらしても回答する気をなくしてしまうでしょう。 それは回答できない方たちが多く発する言葉です。 この相談箱というのは、私のような考えの方が殆どでしょう。 この回答で一歩ずつ知識がついていく。何が悪いのでしょうか? >すぐ見つかりますよ 勉強の仕方を聞いているわけじゃない。 下記の回答を記述するほうが早い。 答えが解らないのなら参加する必要ないです。 >>あなたがいう古いブラウザとは? 西暦*年までのものを言うのか? *年以前のブラウザを使用しているのは何パーセントの人達か。

  • wek00
  • ベストアンサー率61% (91/147)
回答No.13

ひょっとしたら私がイメージしていることがあなたが問題にしていることと全然別の現象のことだったりするかもしれないので、私が想像する古いキャッシュが使われるシナリオの例を書いてみます。 1.Webサーバにて、甲のデータが公開される。 2.あなたは、確認の為ブラウザでページを閲覧する。   (あなたがお使いの端末のブラウザのキャッシュをキャッシュSとします)   キャッシュSは甲のデータ。ブラウザの表示も甲。  ~~しばらく時間が経過~~ 3.あるお客さん、Cさんがページを閲覧する。   (Cさんが使っている端末のブラウザのキャッシュをキャッシュCとします)   キャッシュCは甲のデータ。ブラウザの表示も甲。   購入するものの候補になりそうだということでブックマークする。  ~~しばらく時間が経過~~ 4.売り切れになったので、あなたはWebサーバのデータを乙に更新する。 5.あなたは、確認の為ブラウザでページを閲覧する。   あなたがお使いのブラウザはサーバ上のデータが更新されたか   確認する設定になっていた。確認したところ   キャッシュSのデータはサーバ上のデータより古いことが判明した。   ブラウザはサーバからデータを取得しなおしキャッシュSに入れる。   キャッシュSは乙のデータになり、ブラウザの表示も乙。   あなたがお使いのブラウザでは、   「キャッシュとは常に新しいデーターが表示している」(原文ママ)   という結果になる。  ~~しばらく時間が経過~~ 6.お客Cさんは、あなたが販売していた商品を購入することにし、   自分の端末のブラウザのブックマークからページを開いた。   このブラウザはキャッシュを更新しなかった。   ブラウザはキャッシュCにある当該ページのデータを表示する。   キャッシュCのデータは甲なのでブラウザの表示も甲。 7.お客Cさんは甲のページから注文を行う その他に気になったことについて。 > 全員がこの事実の説明を避けています とお書きになりましたがそれは当たりません。寧ろどの投稿も関係がある内容です(反例)。記述を読み飛ばしてしまったのでしょうか?もう一度最初の投稿から読み直してください(少なくとも本文は)。ここのような読み返せるサイトに既に投稿済みの内容と似たり寄ったりの内容を再投稿するのは好ましくないので、普通はやりません。読み飛ばしをやらかすとすれ違いになります。 ご自身で検索なさってもすぐに同様のページが見つかりますが、一応。 参考: キャッシュ 更新 - Google Search https://www.google.co.jp/search?q=%E3%82%AD%E3%83%A3%E3%83%83%E3%82%B7%E3%83%A5+%E6%9B%B4%E6%96%B0 サイトが更新されない!! IE8でキャッシュをクリア http://pc.beginners-luck.net/pcwp/2012/01/27/ie8-cache-clear.html ブラウザのキャッシュクリア方法 ~ホームページが更新されていない!?~ https://www.kbs-web.com/solution/item/hpinfo/cash.html ホームページの更新をすぐ反映させる方法 ~キャッシュを残さない方法~ https://www.kbs-web.com/solution/item/hpinfo/nocash.html ページが変更されていない? https://www.koushinclub.com/blog/882.html リダイレクト キャッシュ - Google Search https://www.google.co.jp/search?q=%E3%83%AA%E3%83%80%E3%82%A4%E3%83%AC%E3%82%AF%E3%83%88+%E3%82%AD%E3%83%A3%E3%83%83%E3%82%B7%E3%83%A5 ブラウザキャッシュのまとめ - Please Sleep http://please-sleep.cou929.nu/browser-caching-tutorial-memo.html HTTP キャッシュ | Web | Google Developers https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/http-caching?hl=ja

kfjbgut
質問者

お礼

1 先ず、私は解らないから相談箱を利用しています。 よって、私に学習させないで解りやすく解説して下さい。 2 1~7の例ですが、こんなに長く書く必要がないと思います。 6番「このブラウザはキャッシュを更新しなかった。」どうしてしなかったか? 答えはブラウザが古いから・・ 私は古いブラウザなんか現在使っている人はいないと思う。何故なら、他のサイトが表示されないから・・ 私はIE8とIE6は確認済みです。新しいブラウザです。 そうすると益々、あなたがいう古いブラウザとは、にわかに信じがたい。 あなたがいう古いブラウザとは? 西暦*年までのものを言うのか? *年以前のブラウザを使用しているのは何パーセントの人達か。 これを信憑性のある根拠をもって提示しなければ「古いブラウザ」が原因かどうか判断できない。

回答No.12

>けどありえないです。そんなに古いブラウザなら多くのサイトが表示されないです。 そんな反応が返ってきそうだから、書かなかったんですよ。 おそらく私が書くまではこんな機能があることも知らなかったのに、なんでこの機能が未搭載のブラウザだと多くのサイトが表示されないと判断できるんですか? 古いブラウザを使い続けている人は案外います。 下記URLの情報を見れば、Chrome45とかIE8がランクに入るくらい使われていることがわかります。また、「バージョン別ブラウザシェア」の円グラフから30%超がOtherに分類されていて、「ブラウザシェア」のOtherの数値と比較すれば、各ブラウザでランキングに入らない古いバージョンが前者のOther大部分を占めていることがわかるはずです。 http://news.mynavi.jp/news/2017/09/04/067/ しかも、ここまでの話は設定どおりにキャッシュ機能が動作している場合です。検索してみるとわかりますが、設定どおりに動作しないというトラブルは結構あります。Webアプリケーションを作成すると、結構な確率でこの問題に引っかかるので、今回のような質問があると、キャッシュの問題を指摘する回答が多く寄せられることになります。

kfjbgut
質問者

お礼

新規搭載は西暦*年からか。 *年以前のブラウザを使用しているのは何パーセントの人達か。 これを信憑性のある根拠をもって調査できないと判断できません。 因みにIE8は新規搭載です。私の所有する1台です。

回答No.11

ブラウザがキャッシュの機能を搭載したとき、当然情報が更新されないという弊害が発生しました。 そのため、Webアプリケーションのように更新されないと困るところはキャッシュを行わないように設定するようになりました。 そうすると、キャッシュの意味が薄れていくことなります。 そこで、キャッシュの機能に追加が行われました。追加された機能は、ブラウザが表示しようとしたデータのキャッシュを見つけた場合に、そのキャッシュが古くなっていないか確認できる機能です。ブラウザがサーバーにキャッシュの日時を送信すると、対象のファイルが更新されている(キャッシュが古い)場合には新しいデータが送信され、キャッシュが古くない場合には「キャッシュを使え」という応答をします。 おそらく、あなたが操作すると最新の表示になるのはこの機能のおかげです。 ただし、この機能は後から加えられた機能なので、ブラウザのバージョンが古いと搭載されていない可能性があります。そういったキャッシュの確認機能が使えない状況では、古いページが表示され続ける可能性があります。 また、最初の回答にあるPROXYサーバーというものがサーバーとブラウザの間を仲介している場合は、サーバーやブラウザの機能や設定だけでなく、PROXYサーバーがどのようにキャッシュを扱うように設定されているかで挙動がかわります。 なので、あなたが使用しているブラウザと種類・バージョンが違う場合や、通信環境が違う場合には、古いキャッシュがそのまま表示される可能性があるということです。

kfjbgut
質問者

お礼

古いブラウザの件、おもしろい節ではありますね。 けどありえないです。そんなに古いブラウザなら多くのサイトが表示されないです。 現実的な節ではありませんね。

  • wek00
  • ベストアンサー率61% (91/147)
回答No.10

> もしキャッシュが効いていたなら乙に変るはずないのです。 ふうむ。質問者さんが言うキャッシュと回答者の人たちが言うキャッシュはどうやら別のもののようですね。 あなたが言う「キャッシュ」はキャッシュサーバのようなものですね。 Webサーバへのリクエストがあったときに同じデータを持っていれば自分がWebサーバのかわりにクライアントにデータを送ります。これであれば、更新が反映されれば以降他者がアクセスしても更新後のデータが表示されるのでそれで話は終わりです。 二昔くらい前ですが、サーバとクライアントの中間で動作しキャッシュとURLが一致したとき代理応答する仕組みがそこそこ使われました。私が使っていたプロバイダも提供していました。 現在はWebサーバ側でキャッシュサーバ上のデータを見るようにアクセスを振り分けるんだったかな?詳しくないですが、形を変えて今でも盛んに使われているらしいですね。こういうのは大元のWebサーバと区別して扱わなくてもいいんじゃないかと思います。(私はあえて触れなかったわけではなく忘れていただけですが) 他方、No9までの回答者が想定する「キャッシュ」は利用者の端末上でブラウザがウィンドウ(タブ)毎に管理する一時保管データのことです。

kfjbgut
質問者

お礼

この回答がありません。 1 私の疑問は、 >「お気に入りに登録しているサイトを表示させて売り切れ表示の確認を行なっています。」 これは乙表示後に開いた画面です。これで乙になっていることを確認しています。ショップとして当然でしょう。 もしキャッシュが効いていたなら乙に変るはずないのです。 だからキャッシュとは常に新しいデーターが表示していると主張しているんです。 しかし、全員がこの事実の説明を避けています。 誰も説明できる人がいない。

kfjbgut
質問者

補足

追伸 >「お気に入りに登録しているサイトを表示させて売り切れ表示の確認を行なっています。」 これは乙表示後に開いた画面です。これで乙になっていることを確認しています。ショップとして当然でしょう。 どうして乙になるのですか? この説明を求めています。 皆さんこの回答に触れようともしませんね。

  • wek00
  • ベストアンサー率61% (91/147)
回答No.9

私も、古いキャッシュデータを使った注文可能状態のページから注文が入ってくるというのが最もありえそうなパターンだと思います。 基本的なことについて確認を。 WebサーバにあるWebページのデータをWebブラウザで閲覧する場合、サーバ上のデータがブラウザ側に複製され(データを取得=複製)、ブラウザはそのデータを表示します。同じページを複数のウインドウ(タブ)で開いたときにはウインドウ(タブ)毎に複製されます。 次のようなテストを行うとどうなるでしょう? 1.Webサーバ上のページデータを甲にする。 2.ブラウザの二つのウインドウ(ないしはタブ)でそのページを表示し、開いたままにしておく。 3.Webサーバ上のページデータを乙にする。 4.二つのうちの片方を再読み込みしサーバ上のページが乙になったことを確認する。 5.もう片方のページから注文をしてみる    *   *   *   *   * ページデータがどんなところに「保持」される可能性があるかというと、 ・個々の端末のブラウザのメモリキャッシュ(ずぅーっとそのページを開いておく場合) ・個々の端末のブラウザのディスクキャッシュ(既に指摘されているケース。起動し直しても「ずっとそのページを開いておいた」ように見せることができるブラウザもある。←後で見たいページのタブを開いておきブックマークのように使うらしい。また、私は以前、通信量を抑えるためキャッシュにデータがあればサーバにアクセスしないよう設定していました。まれにそういう人もいるかも) ・WebページをHDDなどに保存したもの ・Googleなどの検索エンジンのキャッシュ ・Cloudストレージ(ブラウザと連携しWebページを保存しておいて後で/別の端末でも/オフラインでも読めるなどと謳うサービスがあるそうです) といったものが私が知る範囲でもあります。私は詳しいわけではないのであくまで一部です。

kfjbgut
質問者

お礼

第1文は注文が入っても疑問でないですよ。 最初に表示しているA 次に表示したB 乙に変更後Bを再読み込みした。 Аから注文はできると思います。 再読み込みしなければ表示の途中で甲から乙になりませんわ。 1 私の疑問は、 >「お気に入りに登録しているサイトを表示させて売り切れ表示の確認を行なっています。」 これは乙表示後に開いた画面です。これで乙になっていることを確認しています。ショップとして当然でしょう。 もしキャッシュが効いていたなら乙に変るはずないのです。 だからキャッシュとは常に新しいデーターが表示していると主張しているんです。 しかし、全員がこの事実の説明を避けています。 誰も説明できる人がいない。 2 第2文は参考にさせて頂きます。

回答No.8

> 完売表示後、数日後に入る注文の話です。 質問文に書かれていないことを理解できる人がいると思いますか? >「お気に入りに登録しているサイトを表示させて売り切れ表示の確認を行なっています。」 >この文章は、「売切」表示に変更する前にページを表示していない。ということでしょ! あなたが確認している状況の説明であって、お客さんがどのような状態なのかは別の話だと思いませんか? 数日後でもおこりそうな状況は想像できますが、今の状態ではお話しする気になれないです。 他の回答者からの反応がないのも、同じような理由じゃないですかね。

kfjbgut
質問者

補足

>この文章は、「売切」表示に変更する前にページを表示していない。ということでしょ! そうですよ!だからあなたが言っているようなページを表示中に乙に変更したわけでもないってことです。 >今の状態ではお話しする気になれないです。 反論はいいが、説明も必要でしょ!そうでなければ知らないとしかいいようがない。 全く言及していない。

回答No.7

「売切」表示に変更する前にページを表示していた場合に問題があることを指摘しているのに、その前提を受け入れないのであれば、これ以上回答しても意味がないので撤退します。 それで困るのはあなただけですから。

kfjbgut
質問者

お礼

>「売切」表示に変更する前にページを表示していた場合・・ 私の相談には次のように記載しているでしょ。 「お気に入りに登録しているサイトを表示させて売り切れ表示の確認を行なっています。」 この文章は、「売切」表示に変更する前にページを表示していない。ということでしょ! 国語力の問題です。答えが解らないといって話をすり替えないで頂きたい。

kfjbgut
質問者

補足

それともう一つ参考までにいっときます。 この問題は、「完売」表示して数分後の問題ではありません。 完売表示後、数日後に入る注文の話です。 解ります?いっていること理解できます?

回答No.6

>9:50にお客さんがアクセスしてページを表示したまま退席 >10:00に「完売」に変更 >10:10にお客さんが戻ってきて表示されているページを更新せずに購入処理を行う この場合はキャッシュは関係ありません。9:50時点で最新の情報では、まだ完売にはなっていませんから。 10:10に操作を再開しても、画面上には9:50時点の情報が表示されていて、10:00の変更は反映されないので、「カゴに入れる」ボタンが存在してクリック可能なはずです。 この点を指摘している回答は他にないと思いますけど。

kfjbgut
質問者

お礼

>売り切れ表示をした後、お気に入りに登録しているサイトを表示させて売り切れ表示の確認を行なっています。 この現象を説明できる方が一人もいないのです。 これがある限り、その都度新規表示されていると考えるのが妥当でしょう。

回答No.5

>キャッシュというのも内容は最新の表示ですよね? この認識が間違いです。 キャッシュというのは、同じファイルを何度も読みにいかなくて済むようにするしくみで、それを有効に機能させるためには、一度読み込んだファイルは一定時間内であれば変更されないという前提で以前に読み込んだものをそのまま使用するという処理を行います。それではまずい場合もあるので、サーバー側でキャッシュの有効期間を設定したり、キャッシュ自体を無効にしたりできるようになっています。 また、今回の質問のような現象は、キャッシュ以外でも起こりえます。 例えば、 9:50にお客さんがアクセスしてページを表示したまま退席 10:00に「完売」に変更 10:10にお客さんが戻ってきて表示されているページを更新せずに購入処理を行う といった場合も考えられます。 また、表示を「完売」にするだけでは、その時点でかごに入れられている分については購入処理に進めてしまう可能性もあります。 システム的に「完売」の場合の処理を作成しておいたほうがいいと思います。

kfjbgut
質問者

お礼

あなたの回答は、他の方々からもご指摘を受けております。 ただ、私も相談に記載しているように次の状況があるわけです。 >売り切れ表示をした後、お気に入りに登録しているサイトを表示させて売り切れ表示の確認を行なっています。 この現象を説明できる方が一人もいないのです。 これがある限り、その都度新規表示されていると考えるのが妥当でしょう。

関連するQ&A

専門家に質問してみよう