2012-02-15 12 views
6

Korzystanie z tekstu! wtyczkę, czy istnieje sposób na zmuszenie RequireJS do ponownego załadowania pliku zamiast zwracania buforowanych danych?wymuszając tekst RequireJS! przeładować

+0

Czy możesz podać link do wtyczki? Czy próbowałeś czegoś? Czy jakoś to zawiodło? –

+0

Wtyczka jest http://requirejs.org/docs/api.html#text – nicholas

+3

Nie, nic nie zawodzi, tak właśnie powinno być. Jeśli załadujesz plik tekstowy, wszelkie kolejne żądania tego pliku zwracają pierwotnie załadowane dane. To, czego szukam, to dziwny przypadek, w którym plik mógł się zmienić i powinien zostać odświeżony. – nicholas

Odpowiedz

1

RequireJS będzie buforował tylko plik na żądanie. Przeładowanie strony spowoduje ponowne pobranie. Jeśli widzisz coś innego, to:

  • Albo masz buforowanie na swoim serwerze.
  • lub Twoja przeglądarka buforuje żądanie. Możesz oczywiście wyłączyć to w przeglądarce.

Jeśli chcesz, aby przeglądarki zawsze pobierały czysty plik, powinieneś mieć nagłówek bez pamięci podręcznej dla tych zasobów na serwerze.

+1

wymusić załadowanie plików przeglądarki z serwera można spróbować wywołać je z ciągiem randomy generowane ciąg zapytania - jak /Some-path-to-file/MyJSfile.js?v=TIMESTAMP – shershen

+0

@shershen Don ' t Myślę, że możesz to zrobić za pomocą require.js – ggozad

+1

@ggozad możesz dołączyć parametr GET do wszystkich żądań modułów utworzonych za pomocą requirejs przy użyciu requirejs.config ({urlArgs: 'getparam'}) - może to zostać użyte do przerwania buforowania przeglądarki –

0

myślę, że można dodać nową funkcję html5 cache dostarczając manifestu cache: http://www.html5rocks.com/en/tutorials/appcache/beginner/

następnie można użyć do requirejs „domready”, aby uzyskać odpowiednie zdarzenie Load: http://requirejs.org/docs/api.html#pageload

a następnie słuchać do właściwego zdarzenia (kodu pochodzą z pierwszej link):

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

w tym momencie, gdy zaktualizować urlArgs otrzymasz nowe pliki js i manifestu pamięci podręcznej f ile dostaniesz nowe pliki html