44

Vista で IE 8 を使用しています。JavaScript ファイルを変更してからデバッグを開始するたびに、Ctrl+F5 を押して JavaScript をリロードする必要があります。デバッグを開始するときに JavaScript を自動的にリロードする方法はありますが、ネットを閲覧するだけでパフォーマンスの向上を失うことはありませんか?

ええええ、あなたがおそらく IE が好きではないことはわかっていますが、質問は「最高のブラウザーは何ですか?」ではないことを覚えておいてください。

4

10 に答える 10

48

URL の末尾に文字列を追加して、キャッシュを解除します。私は通常(PHPで)行います:

<script src="/my/js/file.js?<?=time()?>"></script>

私が作業している間は毎回リロードし、本番環境に入るときに離陸するようにします。実際には、これをもう少し抽象化しますが、考え方は同じままです。

この Web サイトのソースをチェックアウトすると、同様の方法で URL の末尾にリビジョン番号が追加され、JavaScript ファイルが更新されるたびに強制的に変更が加えられます。

于 2009-05-15T01:12:17.627 に答える
25

Paolo の一般的なアイデア (つまり、リクエスト uri の一部を効果的に変更する) が最善の策です。ただし、スクリプト ファイルを変更したときに更新するバージョン番号など、より静的な値を使用することをお勧めします。これにより、キャッシュによるパフォーマンスの向上を引き続き得ることができます。

したがって、次のようなもの:

<script src="/my/js/file.js?version=2.1.3" ></script>

または多分

<script src="/my/js/file.2.1.3.js" ></script>

私は最初のオプションを好みます。これは、常に名前を変更する必要がなく、1 つのファイルを維持できることを意味するからです (たとえば、ソース管理で一貫したバージョン履歴を維持します)。もちろん、いずれの場合も (説明したように) 毎回 include ステートメントを更新する必要があるため、展開するたびに固定値を動的な値に置き換えるなど、動的な方法を考え出すことをお勧めします。 (Antなどを使用)。

于 2009-05-15T01:22:31.173 に答える
18

Web ページまたは JavaScript ファイルを操作する場合、変更するたびに再読み込みする必要があります。ブラウザがキャッシュしないように、IE 8 で設定を変更できます。

この簡単な手順に従ってください。

  1. [ツール] → [インターネット オプション] を選択します。
  2. [全般] タブで、[閲覧の履歴] セクションの [設定] ボタンをクリックします。
  3. [Web ページにアクセスするたびに] ラジオ ボタンをクリックします。
  4. [OK] ボタンをクリックします。
于 2009-05-15T01:13:30.743 に答える
6

ブラウザでこれを行うだけの場合 (ユーザーにこれを強制しない場合)、キャッシュを使用しないようにコードを設定することはありません。José が言ったように、パフォーマンスが低下します。

また、アクセスする Web サイトごとにパフォーマンスの向上が失われるため、IE のキャッシュを完全にオフにすることはしません。特定のサイトまたはブラウジング セッションで常にサーバーから更新するように IE に指示できます。

  1. IE 開発者ツールを開く
  2. メニューからキャッシュを選択
  3. [常にサーバーから更新] をクリックしてチェックします。

または、キーボード ショートカット愛好家 (私のような) には..

  • F12、Alt+C、下矢印、Alt+R。

注意: とは言っても... サイトが本番環境で表示されるのとは異なる方法で開発/テストを行うと、結果がまちまちになるリスクがあることに注意してください。良い例は、このキャッシングの問題です。IE が Ajax 呼び出しをキャッシュし、GET メソッドからの結果を更新しないという問題が見つかりました。IE でキャッシングを無効にしていれば、開発中にこの問題が発生することはなく、このように本番環境にデプロイされていたでしょう。

于 2012-01-05T17:39:08.093 に答える
1

最新のブラウザにはjavascriptのセキュリティに関するポリシーがあり、キャッシュをクリアすることは非常に違反しているため、javascriptでは不可能だと思います。

追加してみることができます

<META HTTP-EQUIV="Pragma" CONTENT="no-cache">

ヘッダーにありますが、パフォーマンスが低下します。

于 2009-05-15T01:16:25.947 に答える
1

URL の末尾に js ファイルの変更日を追加します。PHP では、次のようになります。

echo '<script type="text/javascript" src="js/something.js?' . filemtime('js/something.js') . '"></script>';

スクリプトを更新するたびにスクリプトがリロードされるタイミング。

于 2012-06-17T21:27:40.873 に答える
1

ASP.Net を実行している場合は、ASP.Net 4.5 で利用可能なバンドルおよび縮小モジュールを確認してください。

http://www.asp.net/mvc/tutorials/mvc-4/bundling-and-minification

JavaScript ファイルを指す「バンドル」を宣言できます。ファイルが変更されるたびに、新しいクエリ文字列サフィックスが生成されます...ただし、ファイルが変更された場合にのみ生成されます。これにより、タグを新しいバージョン番号で更新することを考える必要さえないため、更新の展開が非常に簡単になります。

また、複数の .js ファイルを 1 つのファイルにまとめて、それらを縮小することも、すべて 1 つのステップで行うことができます。cssについても同様です。

于 2014-06-25T00:02:39.413 に答える
1

これは、ASP.NET のトリックを行う必要があります。概念は、PHP の例で示したものと同じです。スクリプトが読み込まれるたびに URL が異なるため、プロキシのどちらのブラウザもファイルをキャッシュする必要はありません。私は自分の JavaScript コードを別々のファイルに入れるのに慣れていて、Visual Studio が JavaScript ファイルをリロードしないことに気付くまで、かなりの時間を Visual Studio で無駄にしていました。

<script src="Scripts/main.js?version=<% =DateTime.Now.Ticks.ToString()%>" type="text/javascript"></script>

完全な例:

<%@ Page Title="ホームページ" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
    CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" %>

<asp:コンテンツ ID="HeaderContent" runat="サーバー" ContentPlaceHolderID="HeadContent">

   <script src="Scripts/jquery-1.4.1-vsdoc.js" type="text/javascript"></script>  
   <script src="Scripts/main.js?version=<% =DateTime.Now.Ticks.ToString()%>" type="text/javascript"></script>
    <script type="text/javascript">

        $(document).ready(function () {
                                myInit();
                          });

    </script>
</asp:コンテンツ>

明らかに、このソリューションは開発段階でのみ使用する必要があり、サイトを投稿する前に削除する必要があります.

于 2012-05-13T15:43:34.540 に答える
0

Web サイトの開発中に IE タブで F5 キーを繰り返し押す必要をなくすには、ReloadItを使用します。

ここに画像の説明を入力

IE に表示される Web ページごとに、ファイル名、ディレクトリ、またはそれらのセットを構成できます。これらの構成されたパスのいずれかで変更が発生した場合、ReloadIt は IE タブを更新します。シンプルなツール。それだけで機能します。

これにより、javascript だけでなく、すべてがリロードされます。

于 2011-09-09T12:42:28.983 に答える