2017-05-13 36 views
6

Plunker gibi bir oyun alanı oluşturmaya çalışıyorum. Sadece localhost'da iyi çalışıyorken, üretimde çok garip bir davranış olduğunu fark ettim (Cloudflare'de active mode ile). iframe Byiframe'in src dosyasındaki harici dosyaların önbelleğe alınmasını önleyin (CloudFlare ile)

, oyun alanı başka dosyalara bağlantılar içerebilir index_internal.html önizlemesini (örneğin .html, .js, .css). iframe, <script src="script.js"></script> gibi harici bağlantıları yorumlayabilir.

Yani bir kullanıcı editörü kendi dosya (örn script.js) değiştiren her zaman, benim program sunucusunda geçici klasöre yeni bir dosya kaydeder, o zaman localhost üzerinde iyi çalışır, iframe.src = iframe.src tarafından iframe'i yenileyin.

Ancak, üretimde, tarayıcı her zaman kullanıcıların düzenleyicide değiştirirseniz ve yeni bir sürüm sunucusunda klasöründe yazılı olsa bile, ilkscript.js yükleme tutar fark etti. Örneğin, Dev Tools ==> Network'da gördüğüm her şey script.js'un ilk sürümüdür, oysa sunucuda less tarafından kaydedilen yeni sürümü sol taraftan kontrol edebilirim.

Bunun neden böyle olduğunu bilen var mı? Ve nasıl düzeltilir?

enter image description here

Düzenleme 1:

Ben script.js ile işe yaramadı, hangi aşağıdaki çalıştı:

var iframe = document.getElementById('myiframe'); 
iframe.contentWindow.location.reload(true); 
iframe.contentDocument.location.reload(true); 
iframe.contentWindow.location.href = iframe.contentWindow.location.href 
iframe.contentWindow.src = iframe.contentWindow.src 
iframe.contentWindow.location.replace(iframe.contentWindow.location.href) 

Ben index_internal.html ile çalıştı, bir sürümünü eklemek çalıştı, ancak script.js:

var newSrc = iframe.src.split('?')[0] 
iframe.src = newSrc + "?uid=" + Math.floor((Math.random() * 100000) + 1); 
'i yeniden yüklemedi.

Cloudflare öğesini development mode'a çevirirseniz, script.js yeniden yüklenir, ancak Cloudflare'ı active mode içinde tutmak istiyorum.

cevap

İlgili konular