Как вынудить IE перезагрузить JavaScript?

Если membership_id равно AUTO_INCREMENT PRIMARY KEY, и можно выбрать строку с самым высоким значением в ней, то вы можете использовать:

SELECT *
FROM membership_details
NATURAL JOIN (
    SELECT MAX(membership_id) as membership_id
    FROM membership_details
    GROUP BY member_id
) sub

Вы также можете просто исправить то, что вы уже попытался, а именно:

SELECT * 
FROM membership_details WHERE (membership_id,member_id) IN 
( SELECT membership_id, MAX(membership_id)
  FROM membership_details
  GROUP BY member_id
)

измените его на:

SELECT * 
FROM membership_details WHERE (membership_id,member_id) IN 
( SELECT MAX(membership_id), member_id
  FROM membership_details
  GROUP BY member_id
)

Но если membership_id - ПЕРВИЧНЫЙ КЛЮЧ, вам не нужно member_id в предложении WHERE, и следующее также должно работать:

SELECT * 
FROM membership_details WHERE (membership_id) IN 
( SELECT MAX(membership_id)
  FROM membership_details
  GROUP BY member_id
)

Как видите, подзапрос такой же, как в моем запросе JOIN.

43
задан Max Schmeling 15 May 2009 в 01:08
поделиться

4 ответа

Добавьте строку в конце URL-адреса, чтобы сломать кеш. Обычно я делаю (с PHP):

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

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

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

48
ответ дан 26 November 2019 в 22:44
поделиться

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

Выполните следующие простые шаги.

  1. Выберите Сервис-> Свойства обозревателя.
  2. На вкладке «Общие» нажмите кнопку «Настройки» в разделе истории просмотров.
  3. Установите переключатель «Каждый раз, когда я посещаю веб-страницу».
  4. Нажмите кнопку OK.
16
ответ дан 26 November 2019 в 22:44
поделиться

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

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

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

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

1
ответ дан 26 November 2019 в 22:44
поделиться

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

Так что либо что-то вроде этого:

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

или, может быть,

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

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

25
ответ дан 26 November 2019 в 22:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: