2011-12-14 2 views
1

私は今朝私のウェブサイトでかなり奇妙な問題を抱えていました。一部のユーザーの選択日のレポートは、1日オフでした。ユーザーは3日間( 'Today'、 'Tomorrow'、 'Day After Tomorrow')から選択し、選択した日を実際の日付に変換します(今日は'12/14 'のように見えます)。ASP.NET DateTime.Nowは単一のページにフリーズして登場しました

昨夜のページはうまくいきましたが、その日にロールバックされた真夜中が現在の日に更新されなかったときに何らかの形で表示されます。

このページでは、.Net DateTime.Nowを使用して現在の日付を取得し、選択したユーザーの日によって+0、+ 1、または+2日をオフセットします。

サイトのシステム時刻を確認したところ、正しいものでした。 DateTime.Nowはウェブサイトの他のページでもうまくいきました。

サイト全体(マイナスweb.config)をサーバーに再発行するだけで、問題は解決しました。しかし、私の質問は、どのようにこれが最初に起こったのですか?私はちょうどちょっと親切です。何が原因で、DateTime.Nowが単一のページで更新されず、再び起こらないようにしたいのですか?

このサイトは、Windows Server 2008 R2仮想マシン上のIISを使用してホストされています。

詳細情報が必要な場合は教えてください。私は質問を更新するために最善を尽くします。

+4

特定のページでキャッシュが有効になっていますか? – Matthew

+0

はい。しかし、1人のユーザーがページに座って、別のユーザーの日時のキャッシングを引き起こすことはできますか?また、本当に、-1?私はこれを研究して何も見つけませんでしたが、問題が何であるかはかなり明らかです... –

答えて

3

クライアントサイドキャッシング(ブラウザは新しいファイルが必要ではないと思っていました)、サーバーサイドキャッシング(サーバーは新しいファイルが必要だと思っていませんでした。 (あなたの地方の深夜よりもx時間遅くなります)。

ページを再生成するためにキャッシングを邪魔するようにasp.netに指示する必要がありますが、パフォーマンスが悪化したり、時には劇的に悪化することがあります。 javascriptまたはドーナツ穴のキャッシングを使用することを検討してください。

+0

可能な時間帯の問題についてもお話しました。 +1 – famousgarkin

+0

ありがとう!私はドーナツホールキャッシングの使用方法について検討し、その間、ユーザーはこの特定のページでアイドルでないことを知らせます。 –

+0

さて、私はこれを認めたくないのですが、問題が見つかりました。トラブルシューティングの一環として、日付変更時にユーザーがページを開いたままにしておけば、ドーナツキャッシングを試してサイト全体のクライアントサイドキャッシュを無効にしてもdatetimeを正しくキャッシュできませんでした。クラス変数が静的変数として宣言されていたことがわかります...それを削除すると問題が解決しました。助けてくれてありがとう、この全体の試練は、私に新しいコンセプト(ドーナツとドーナツ穴キャッシング)を教えてくれた! –

関連する問題