7

これは私がこれまで対処する必要がなかったことなので、無知に聞こえたらすみません。

私が抱えている基本的な問題は、Visual Studio 2010 内で作業しているときに、行った変更が何らかのキャッシュに引っかかっているように見えることです。

たとえば、ページに変更を加えてソリューションを実行した後、Ctrl + F5 を押してキャッシュを強制的に更新し、変更を確認する必要があります。これは、ASP.NET/HTML/CSS & JavaScript コードです。同じこと。

以前は、Visual Studio を実行するたびにキャッシュをクリアしていたので、控えめに言っても少しイライラしています。

さらに、ソリューションを IIS サーバーに展開すると、ユーザーにも同じことが起こります。ASP.NET ページに変更があったとしても、ユーザーはキャッシュをクリアするまで、キャッシュされたバージョンを取得し続けます。ファイル (特に JavaScript) の名前をバージョン番号に変更することで、この問題をある程度軽減しました。これにより、クライアントは常にそれらを新しいファイルとして認識し、キャッシュからロードする代わりにロードします。

これを引き起こしている可能性のある Visual Studio または web.config 内の設定はありますか?

編集:これが私のweb.configファイルです

<configuration>
  <system.web>
    <sessionState cookieless="UseCookies" timeout="1440" mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424"/>
    <compilation debug="true" targetFramework="4.0">
      <assemblies>
        <add assembly="System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=xxx"/>
        <add assembly="System.Web.Extensions.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=xxx"/>
        <add assembly="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=xxx"/>
      </assemblies>
    </compilation>
    <authentication mode="Windows"/>
    <pages>
      <controls>
        <add tagPrefix="ajaxtoolkit" namespace="AjaxControlToolkit" assembly="AjaxControlToolKit"/>
      </controls>
    </pages>
  </system.web>
  <system.web.extensions>
    <scripting>
      <webServices>
        <jsonSerialization maxJsonLength="50000000"/>
      </webServices>
    </scripting>
  </system.web.extensions>
</configuration>
4

1 に答える 1

7

Web リソース (Css、Js、画像、さらには Html) は、ネットワーク経由でダウンロードするのに時間がかかるため、Web ページの読み込みにかかる時間が長くなります (Steve Souders は、80% 近くかかることを示唆しています。こちらを参照してください)。HTTP キャッシングを使用すると、これらのリソースをブラウザまたはプロキシによって保存またはキャッシュできます。リソースがキャッシュされると、ブラウザまたはプロキシはローカルにキャッシュされたコピーを参照できるようになり、次回 Web ページにアクセスしたときにリソースを再度ダウンロードする必要がなくなります。

ブラウザーのキャッシュは、HTTP キャッシュ ヘッダーによって制御できます (概要については、こちらを参照してください) 。

つまり、Visual Studio や asp.net が原因ではなく、ブラウザーが原因です。

サーバー側 (テスト目的のみ) またはクライアント側 (キャッシュをリロードしてバイパスするため) でキャッシュを無効にする方法がたくさんあることを願っています。

ここにいくつかの可能性があります:

asp.net の使用

このコードを使用して、ブラウザのキャッシュを明示的に無効にすることができます

// Stop Caching in IE
Response.Cache.SetCacheability(System.Web.HttpCacheability.NoCache);

// Stop Caching in Firefox
Response.Cache.SetNoStore();

警告: これは、テスト目的でのみローカルで実行してください。

また、多くのバンドル システムでは、キャッシュ設定を制御できます。asp.net mvc バンドルは、バンドルが作成されてから 1 年後に HTTP Expires ヘッダーを設定し、クエリ文字列に追加のパラメーターを追加します。バンドルが変更されない限り、この一意の識別子は同じです。ここを参照してください。

ブラウザ上

ページをリロードしてキャッシュをバイパスするためのショートカットが多数あります。

  • Chrome : Shift + リロード ボタン
  • IE : Ctrl + F5 または Ctrl + リロード ボタン
  • Firefox : Ctrl + Shift + R または Shift + リロード

また、ブラウザのキャッシュを完全に無効にする方法はたくさんあります。

  • IE : ツール ‣ インターネット オプション ‣ インターネット一時ファイル ‣ 設定 ‣ 保存されたページの新しいバージョンをチェック
  • Chrome : ツール ‣ 開発者ツール ‣ 左下の歯車アイコン ‣ 隅 キャッシュを無効にする
  • Firefox : ツール ‣ オプション ‣ 詳細設定 ‣ ネットワーク ‣ キャッシュ サイズ =0

ウィキペディアにはすばらしいリストがあります。

于 2013-06-06T15:37:25.860 に答える