Подтвердить что ты не робот

Как заставить IE перезагрузить javascript?

Я использую IE 8 на Vista, и каждый раз, когда я меняю файл javascript, а затем начинаю отладку, мне нужно нажать Ctrl + F5, чтобы перезагрузить мой javascript. Есть ли способ сделать это автоматически перезагрузить javascript при начале отладки, но не потерять прирост производительности при простое просмотр сети?

Да, я знаю, что вам, вероятно, не нравится IE, но имейте в виду, что вопрос не "Какой лучший браузер?".

4b9b3361

Ответ 1

Добавьте строку в конце вашего URL, чтобы разбить кеш. Я обычно делаю (с PHP):

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

Так что он перезагружается каждый раз, пока я работаю над ним, а затем снимаю его, когда он идет в производство. На самом деле я отвлек это немного больше, но идея остается прежней.

Если вы посмотрите источник этого веб-сайта, они добавят номер версии в конце URL-адреса аналогичным образом, чтобы заставить изменения на нас всякий раз, когда они обновляют файлы javascript.

Ответ 2

Общая идея Паоло (т.е. эффективное изменение части запроса uri) - ваш лучший выбор. Однако я бы предложил использовать более статичное значение, такое как номер версии, который вы обновляете, когда вы изменили файл script, чтобы вы могли получить прирост производительности при кешировании.

Итак, что-то вроде этого:

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

или, возможно,

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

Я предпочитаю первый вариант, потому что это означает, что вы можете поддерживать один файл, а не постоянно его переименовывать (например, поддерживаете согласованную историю версий в своем исходном элементе управления). Конечно, один из них (как я их описал) включал бы каждый раз обновлять ваши включенные операторы, поэтому вам может понадобиться динамический способ сделать это, например, заменять фиксированное значение динамическим при каждом развертывании (используя Ant или что-то еще).

Ответ 3

Когда вы работаете с веб-страницей или файлом javascript, вы хотите, чтобы она была перезагружена каждый раз, когда вы ее меняете. Вы можете изменять настройки в IE 8, поэтому браузер никогда не будет кэшировать.

Следуйте этим простым шагам.

  • Выберите Инструменты- > Свойства обозревателя.
  • На вкладке "Общие" нажмите кнопку "Настройки" в разделе "Просмотр истории".
  • Нажмите кнопку "Каждый раз, когда я нахожусь на веб-странице".
  • Нажмите кнопку OK.

Ответ 4

Если вы хотите просто сделать это в своем браузере (a.k.a. не форсировать это для ваших пользователей), то я бы не стал устанавливать код, чтобы не использовать кеш. Как сказал Хосе, потери производительности.

И я бы не отключил кэширование на IE вообще, потому что вы теряете прирост производительности для каждого посещаемого вами веб-сайта. Вы можете сказать, что IE всегда обновляется с сервера для определенного сайта или сеанса просмотра:

  • Откройте средства разработки IE
  • Выберите Cache из меню
  • Нажмите, чтобы проверить "Всегда обновлять с сервера"

Или, для клавиатуры-shortcut-philes (например, я) там..

  • F12, Alt + C, Стрелка вниз, Alt + R.

ПРИМЕЧАНИЕ ОСТОРОЖНО: Сказав это... Имейте в виду, что в любое время, когда вы разрабатываете/тестируете по-другому, чем сайт будет рассматриваться в процессе производства, вы рискуете получить смешанные результаты. Хорошим примером является проблема кэширования. Мы обнаружили проблему, при которой IE кэшировал наши вызовы Ajax и не обновлял результаты из метода GET. Если бы мы отключили кеширование в IE, мы бы никогда не видели эту проблему в разработке и использовали бы ее для создания таким образом.

Ответ 5

В javascript я думаю, что это невозможно, потому что современные браузеры имеют политику безопасности в javascripts.. и очистка кеша очень нарушая его.

Вы можете попробовать добавить

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

В вашем заголовке, но у вас будет потеря производительности.

Ответ 6

Это должно сделать трюк для ASP.NET. Концепция такая же, как в примере PHP. Поскольку URL-адрес отличается каждый раз, когда загружается script, ни браузер прокси-сервера не должен кэшировать файл. Я использовал, чтобы поместить код JavaScript в отдельные файлы и потратил значительное количество времени на Visual Studio, пока не понял, что он не перезагрузит файлы JavaScript.

<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>

Очевидно, это решение должно использоваться только на стадии разработки и должно быть удалено перед публикацией сайта.

Ответ 7

Чтобы устранить необходимость повторного нажатия F5 на вкладке IE при разработке веб-сайта, используйте ReloadIt.

enter image description here

Для каждой веб-страницы, отображаемой в IE, вы можете настроить имя файла, каталог или набор из них. Если какое-либо изменение происходит в любом из этих настроенных путей, ReloadIt обновляет вкладку IE. Простой инструмент. Это просто работает.

Это перезагрузит все, а не только javascript.

Ответ 8

Добавьте дату изменения файла js в конце вашего URL. С PHP он будет выглядеть примерно так:

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

Когда ваш script будет перезагружен каждый раз при его обновлении.

Ответ 9

Если вы используете ASP.Net, проверьте модуль Bundling and Minification, доступный в ASP.Net 4.5.

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

Вы можете объявить "пакет", указывающий на ваш файл javascript. Каждый раз, когда ваш файл изменяется, он генерирует новый суффикс querystring... но будет делать это только тогда, когда файл изменится. Это упрощает развертывание обновлений, потому что вам даже не нужно думать об обновлении тегов новыми номерами версий.

Он также может объединить несколько файлов .js вместе в один файл и минимизировать их за один шаг. То же самое для css.