2012-03-08 18 views
12

RequireJS (jQuery sürümü) kullanıyorum ve istenmeyen önbelleğe almayı önlemek için komutlarıma GET parametreleri eklemek istiyorum.URL önbellekleme parametreleri ile RequireJS?

Dokümanlar içinde önerildiği gibi the urlArgs parameter kullanıyorum. aşağıdaki gibi

({ 
    appDir: "../", 
    baseUrl: "scripts/", 
    urlArgs: "cache=v2", 
    ... 

Sonra projeyi inşa: Bu benim app-build.js dosyasıdır

$ node ../../r.js -o app.build.js 

app-build dizininde çıktı artık önceden olduğu gibi aynı dosyayı hem require-jquery.js, içerir ve require-jquery.js?cache=v2 , boş olan

index.html dosyasının cache=v2 referansına sahip olduğu görülmemektedir. Sayfayı bir tarayıcıya yüklediğimde, komut dosyalarından herhangi birine eklenen cache=v2 parametresini göremiyorum.

Yanlış bir şey yapıyorum?

cevap

0

Canlı uygulamayı çalıştırırken kullandığınız build.js dosyası ile optimizer için farklı bir build.js dosyası kullanmayı denerim. Açıklamanıza bağlı olarak, optimizer komut dosyasının urlArgs parametresini düzgün bir şekilde işlemediği görülüyor (require-jquery.js? Cache = v2 adlı bir dosya çıktılandığından).

Önbellek = v2'nin index.html'de görünmesini beklemiyordum (neden olsun?), Ancak ağ etkinlik günlüğünde beklemeyi haklısınız.

1

urlArgs üzerinde docs:

ve this issue from Github James Burke “gelişme sırasında bu kullanmak yararlı olabilir, Ancak, kodunuzu dağıtmadan önce kaldırmak için emin olun”: “yok Oluşturma sırasında urlArgs kullanmaya çalışın ”

1

urlArgs parametresi, yalnızca geliştirme için uygun olduğu inancının yazarının stated nedeniyle olduğu gibi, çalışma zamanı yapılandırmasının daha fazlasıdır (örn. yalnızca RequireJS tarafından değil, r.js en iyileştiricisi tarafından anlaşılır). (ve B reklam "uygun başlık göndermeyen dev sunucuları". Yani (tipik main.js veya config.js, require.js tarafından yüklenen bir .js dosyası içinde) require.config çağrısında yapılandırmanız gerekir ediyorum ya: Bu diğer başına,

require.config({ 
    // other config, like paths and shim 

    urlArgs: "cache=v2" 
}); 

Ya SO answer, require.js dosyasını yüklemeden önce onu doğrudan bir <script> satırında tanımlarsınız.