web-dev-qa-db-ja.com

JavaScriptをリロードするためにIEを強制するには?

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

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

43
Max Schmeling

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

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

そのため、作業中に毎回再読み込みし、本番環境に移行したらそれを削除します。現実にはこれをもう少し抽象化しますが、考え方は同じままです。

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

48

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などを使用)。

25
Alconja

Webページまたはjavascriptファイルを操作するときは、変更するたびにリロードする必要があります。 IE 8で設定を変更できるため、ブラウザはキャッシュされません。

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

  1. [ツール]-> [インターネットオプション]を選択します。
  2. [全般]タブで、[閲覧の履歴]セクションの[設定]ボタンをクリックします。
  3. [Webページにアクセスするたびに]ラジオボタンをクリックします。
  4. OKボタンをクリックします。
16
Vadim

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

そして、IEをオンにすることはありません。アクセスするすべてのWebサイトでパフォーマンスの向上が失われるためです。常に更新するようにIE特定のサイトまたはブラウジングセッションのサーバー:

  1. Open IE開発者ツール
  2. メニューからキャッシュを選択します
  3. 「サーバーから常に更新」をチェックするためにクリックします

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

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

注意事項:これを言った...サイトが本番環境で表示される方法とは異なる方法で開発/テストを行うと、結果が混在するリスクが生じることに留意してください。良い例は、このキャッシュの問題です。 IEがAjax呼び出しをキャッシュし、GETメソッドからの結果を更新しないという問題を発見しました。IEでキャッシュを無効にした場合、開発でこの問題を見たことはなく、このように本番環境に展開しました。

5
undeniablyrob

JavaScriptでは、それは不可能だと思います。なぜなら、最新のブラウザにはJavaScriptで セキュリティに関するポリシー があり、キャッシュのクリアは非常に違反するものだからです。

追加しようとすることができます

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

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

1
José Leal

ASP.Netを実行している場合は、ASP.Net 4.5で利用可能なBundling and Minificationモジュールを確認してください。

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

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

また、複数の.jsファイルを1つのファイルにまとめて1つのファイルにまとめて縮小することもできます。 CSSについても同じです。

1
Rob Hudson

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

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

完全な例:

 <%@ Page Title = "Home Page" Language = "C#" MasterPageFile = "〜/ Site.master" AutoEventWireup = "true" 
 CodeBehind = "Default.aspx.cs" Inherits = "WebApplication1._Default"%> 
 
 <asp:Content ID = "HeaderContent" runat = "server" 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:Content> 

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

1
drpetermolnar

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

enter image description here

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

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

0
Cheeso

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

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

更新するたびにスクリプトがリロードされるとき。

0
oO.