2011-02-09 15 views
2

Silverlight 4アプリケーションで、現在MEFをロードオンデマンドXapsに使用しています。私は現在、キャッシュを使用してパフォーマンスを向上させています。 MEFがWebClientを使用してXapをダウンロードし、それがブラウザのダウンロードメカニズムを使用することは、私の理解であるため、そのキャッシュポリシーが適用されます。Silverlight、MEF、オンデマンドXapの読み込みとキャッシュについて

私のテストでは、私が見ている結果はやや混乱しており、結果はブラウザによって異なります。明らかに、最初のアクセスでは、キャッシュをクリアしてオンデマンドのXapsがサーバーから要求されます。そして、アプリケーションセッションの間、Xapsはこれだけ一度だけダウンロードされます。これまでのすべての良い。

しかし、Xapsがキャッシュされることを期待していた(または少なくとも期待していた)の間のブラウザセッション。しかし、誰 - 私は(シオマネキを使用して)次のことを守ってください。私はブラウザ(Ctrlキー+ F5)を更新すると

Internet Explorerの

その後、オンデマンドXapsは、サーバから要求されず、ロードされていませんローカルキャッシュから取得します。しかし、ブラウザを再起動すると、すべてが再びダウンロードされます。ブー。

のFirefoxとChrome

私はページ(Ctrlキー+ F5)を更新する場合は、オンデマンドXapsは、サーバーから再度要求されている - 何のキャッシングはまったく発生しません。ブー。そして明らかに、ブラウザを再起動してもキャッシングは発生しません。

私にとって理想的なのは、ブラウザがXapをロードする必要がある場合、新しいバージョンが存在するかどうかを確認するIf-Modified-Sinceヘッダーをサーバーに照会する場合、そうでない場合は、ローカルキャッシュからロードします。しかし、私のテストでは、If-Modified-Sinceヘッダーがサーバーに送信されていました。だから私の質問:

MEFを使ってこれを透過的に達成する方法はありますか?あるいは別のフレームワークですか?または、隔離されたストレージ(yuck)を使用して自分のキャッシングレイヤーをロールアップする必要がありますか?

オンデマンドのXapローディングのように見えますが、キャッシングは手間をかけずに済むので、これは単なるボックス外ではうまくいかないことに驚いています。

答えて

2

OK私はこの質問を投稿した直後にそれを理解しました。

ビルドされたVisual Studio Webサーバーを使用してプロジェクトをホストしていました。それはまったくキャッシュをサポートしていないようです。しかし、すぐに私はIISに私のプロジェクトを主催したとして、私は具体的には、私が希望正確な動作を見た:

を私のための理想的な行動は、それが照会するXAP、 をロードする必要がある場合、 ブラウザのためであります 変更される場合は、-Sinceヘッダが 新しいバージョンが存在するかどうかを確認し、それを をダウンロードした場合、そうでない場合、そのローカル キャッシュ

Internet Explorerで、少なくともからそれをロードするために、IとサーバーIf-Modified-Sinceヘッダーを送信し、304 Not Modifiedレスポンスを受信することができます最近Xapsにアクセスしました。完璧!

+0

あなたがそれを理解して嬉しいです。参考までに、IIS Expressが公開されているので、Visual Studio Webサーバーを使用する理由はもう分かりません。 –

関連する問題