我正在努力制作一个像plunker一样的游乐场。我刚刚注意到一个非常奇怪的生产行为(在Cloudflare中使用active mode
),而在localhost
中效果很好。
按iframe
,游乐场预览index_internal.html
,其中可能包含指向其他文件的链接(例如.html
,.js
,.css
)。 iframe
能够解释外部链接,例如<script src="script.js"></script>
。
因此,每当用户在编辑器上修改其文件(例如script.js
)时,我的程序会将新文件保存到服务器上的临时文件夹中,然后按iframe.src = iframe.src
刷新iframe,适用于localhost
。
但是,我意识到,在生产中,浏览器始终会加载初始 script.js
,即使用户在编辑器中修改它并在文件夹中写入新版本服务器。例如,我在Dev Tools ==> Network
中看到的始终是script.js
的初始版本,而我可以通过左侧的script.js
检查服务器中保存的less
的新版本手。
有谁知道为什么会这样?以及如何解决它?
修改1:
我尝试了以下操作,但不适用于script.js
:
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)
我尝试添加版本,它与index_internal.html
一起使用,但没有重新加载script.js
:
var newSrc = iframe.src.split('?')[0]
iframe.src = newSrc + "?uid=" + Math.floor((Math.random() * 100000) + 1);
如果我将Cloudflare转为development mode
,则重新加载script.js
,但我确实希望将Cloudflare保留在active mode
。
答案 0 :(得分:2)
我找到了。
我们可以在CloudFlare中创建用于缓存的自定义规则:
https://support.cloudflare.com/hc/en-us/articles/200168306-Is-there-a-tutorial-for-Page-Rules-#cache
例如,我可以将Bypass
设置为文件夹Cache Level
的{{1}}。