2017-05-13 16 views
6

Tôi đang cố gắng tạo một sân chơi như plunker. Tôi chỉ nhận thấy một hành vi rất kỳ quặc về sản xuất (với active mode trong Cloudflare), trong khi nó hoạt động tốt trong localhost.Ngăn chặn các tệp bên ngoài trong src iframe khỏi được lưu vào bộ nhớ cache (với CloudFlare)

Bằng iframe, xem trước sân chơi index_internal.html có thể chứa liên kết đến các tệp khác (ví dụ: .html, .js, .css). iframe có thể diễn giải các liên kết bên ngoài như <script src="script.js"></script>.

Vì vậy, mỗi khi người dùng sẽ thay đổi tập tin của họ (ví dụ, script.js) vào trình soạn thảo, chương trình của tôi sẽ lưu các tập tin mới vào một thư mục tạm thời trên máy chủ, sau đó làm mới iframe bởi iframe.src = iframe.src, nó hoạt động tốt trên localhost.

Tuy nhiên, tôi nhận thấy rằng, trong quá trình sản xuất, trình duyệt luôn tải ban đầuscript.js, mặc dù người dùng sửa đổi nó trong trình chỉnh sửa và phiên bản mới được viết trong thư mục trong máy chủ. Ví dụ, những gì tôi thấy trong Dev Tools ==> Network luôn là phiên bản đầu tiên của script.js, trong khi tôi có thể kiểm tra phiên bản mới của script.js được lưu trong máy chủ bằng less ở bên trái.

Có ai biết tại sao nó giống như thế này không? Và làm thế nào để khắc phục nó?

enter image description here

Sửa 1:

Tôi đã thử các sau đây, mà không làm việc với 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) 

Tôi cố gắng thêm một phiên bản, nó làm việc với index_internal.html, nhưng không tải lại script.js:

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

Nếu tôi bật Cloudflare thành development mode, script.js được tải lại, nhưng tôi muốn giữ Cloudflare ở active mode.

Trả lời

Các vấn đề liên quan