2012-02-15 3 views
6

Использование текста! плагин, есть ли способ заставить RequireJS перезагружать файл, а не возвращать кэшированные данные?принудительный текст RequireJS! для перезагрузки

+0

Не могли бы вы предоставить ссылку на плагин? Вы что-то пробовали? Неужели это так не получилось? –

+0

плагин http://requirejs.org/docs/api.html#text – nicholas

+3

Нет, ничего не происходит, это на самом деле так, как должно быть. Если вы загружаете текстовый файл, любые последующие запросы для этого файла возвращают первоначально загруженные данные. Я ищу нечетный случай, когда этот файл мог быть изменен и должен быть обновлен. – nicholas

ответ

1

RequireJS будет кэшировать только файл за запрос. Перезагрузка страницы приведет к ее повторному запуску. Если вы видите что-то другое, это потому, что:

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

Если вы хотите, чтобы браузеры каждый раз выбирали чистый файл, вы должны иметь заголовок без кэша для этих ресурсов на вашем сервере.

+1

, чтобы обеспечить загрузку файлов браузером с сервера, можно попытаться вызвать их со случайной сгенерированной строкой запроса - например, /Some-path-to-file/MyJSfile.js?v=TIMESTAMP – shershen

+0

@shershen Don ' Думаю, вы можете сделать это с помощью require.js – ggozad

+1

@ggozad, вы можете добавить параметр GET ко всем запросам модуля, сделанным с помощью requirejs, используя requirejs.config ({urlArgs: 'getparam}) - это можно использовать для разрыва кеширования браузера –

0

Я думаю, что вы могли бы добавить новую функцию кэширования html5, предоставляя манифест кэша: http://www.html5rocks.com/en/tutorials/appcache/beginner/

, то вы могли бы использовать requirejs «domReady», чтобы получить надлежащее событие нагрузки: http://requirejs.org/docs/api.html#pageload

и затем слушать соответствующую событию (код взят из первой ссылки):

window.applicationCache.addEventListener('updateready', function(e) { 
if (window.applicationCache.status == window.applicationCache.UPDATEREADY) { 
    // Browser downloaded a new app cache. 
    if (confirm('A new version of this site is available. Load it?')) { 
    window.location.reload(); 
    } 
} else { 
    // Manifest didn't changed. Nothing new to server. 
}}, false); 

в этот момент, когда вы обновляете urlArgs вы получите новые JS-файлы и с явной кэш-е ile вы получите новые html-файлы

 Смежные вопросы

  • Нет связанных вопросов^_^