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ó?
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
.