2012-05-04 38 views
0

レスポンスのあるサイトがあります。ページ(カートのページ)にリダイレクトされ、何らかの理由でPage_InitとPage_Load関数が呼び出されていないIE8を使用します。 URLバーにカーソルを置いてEnterキーを押しても、まだ呼び出されていません。私がF5を押すと、呼び出されます。別のブラウザ(IE8モードでIE9を含む)を使用すると、呼び出されます。私はトラフィックを調べるためにFiddler2を走らせました。あなたは世界のアイコンが回転しているのを見ても、URLバーをクリックして入力を押すとトラフィックは発生しません。IE8ではPage_Initが呼び出されていません

この現象の原因は何ですか?それはJavascriptやPage_Loadを傍受しているUpdate Panelでなければならないようです。

特記事項:サイトはAbleCommerceで、ページはカートページです。製品の選択プロセスをカスタマイズしました。

サイトのテストインスタンスで問題を再現できるので、カートをロードするカスタムコントロールのPage_InitとPage_Load関数の両方にブレークポイントを追加しました。 IE8では、IE8のURLバーにカーソルを置いてEnterキーを押すと、ブレークポイントが決して打撃を受けることはありません。他のブラウザでは、ヒットします。 IE8ブラウザモードでIE9を実行すると、ヒットします。しかしIE8では、リフレッシュ(F5)を実行するとヒットするだけです。

私はこれがJavascriptまたはUpdate Panelの問題でなければならないと考えています。 FirefoxエラーコンソールまたはIE8に表示されるJavascriptエラーはありません。

これを引き起こしている可能性のある考えはありますか?または、どのようにトラブルシューティングを行うことができますか?

+2

は '&_ = xyz'のように、追加のパラメータを使用してページを呼び出すようにしてください'xyz'はいつも新鮮です(現在のtostringのように)。ページが余分なパラメータでリフレッシュされた場合、ブラウザがあまりにも積極的にキャッシュするキャッシュ問題が発生します。なぜそうかもしれない - それは言うのが難しい。これはjQueryの問題で、フルキャッシングを有効にしてURLを呼び出すと、ブラウザは内部的にキャッシュ設定を取得し、ページをコールバックすることはありません。 –

+0

クエリ文字列パラメータを追加すると、ポストバックが発生します。私は迅速な回避策は、ランダムなクエリ文字列のパラメータをresponse.redirectに追加することです。 – EfficionDave

+0

これを回答として投稿することはできますか? –

答えて

1

&_=xyzのような追加のパラメータを使用してページを呼び出すと、xyzは常に新鮮です(現在のtostringのように)。ページが余分なパラメータでリフレッシュされた場合、ブラウザがあまりにも積極的にキャッシュするキャッシュ問題が発生します。

なぜそうかもしれない - それは言うのは難しい。これはjQueryの問題で、フルキャッシングを有効にしてURLを呼び出すと、ブラウザは内部的にキャッシュ設定を取得し、ページをコールバックすることはありません。

+0

ありがとう!それは私の問題に対する効果的な回避策であることが判明しました。 – EfficionDave

+0

私はまだ何が本当の原因だろうと思っています... –

+0

同様に。私をさらに掘り下げたいのであれば、サイトはwww.makaboo.comです。商品を追加してパーソナライズするだけでカートページにアクセスしてみることができます。 – EfficionDave

0

私はまったく同じ問題を抱えていました... IEの重いキャッシュオプションのためです。だからではなく、ランダムな変数を使用するので、私はこのようなすべてのポストバックエンfalseにすべての応答キャッシュを設定します。

protected void Page_Load(object sender, EventArgs e) 
{ 
     Response.Cache.SetNoStore(); 
     Response.Cache.SetCacheability(HttpCacheability.NoCache); 
     Response.Cache.SetExpires(DateTime.Now); 
     Response.Cache.SetLastModified(DateTime.Now); 
     Response.Cache.SetAllowResponseInBrowserHistory(false); 
     .... 
} 

出典:Page_Load called in Firefox, but not IE

1

現在の受け入れ答えは、この問題をデバッグするための良い方法です。しかし、この問題を解決するには、レスポンスにHTTPヘッダーを設定して、ブラウザにキャッシュしないように伝える必要があります。

最も人気のある言語でキャッシュ・ヘッダーを設定する方法については、このスタックオーバーフローの問題のために受け入れ答えを見てみましょう: Making sure a web page is not cached, across all browsers

関連する問題