Hi,
LoadComplete event is fired as long as the main document finished parsing. It is roughly equivalent to document.load event. However in order for the main document finishes parsing, the main document itself and all the
dependency resources must be done loading. This is
not the same as all sub resources. A typical example of dependency resource is JavaScript file. In the following HTML:
Code: HTML/ASPX
<script src="some_js_code_that_defines_some_function.js"></script>
<script>
some_function();
</script>
The parser will not proceed to the second script block (that calls "some_function()") until the JavaScript files referenced in the first script element has finished loading (which defines "some_function()"). On the other hand, if the script element was an img element, then the loader will start loading the image in the background but the parser will continue.
Cache is automatically enabled by default and is already highly optimized. So there is nothing particular needs to be done. It is however possible that your server/page explicitly disabled cache. Cache are also automatically disabled for certain types of request (such as HTTP POST request).
iframes are loaded asynchronously. So it should not block LoadComplete event.
Please keep in mind that all the above are well defined/established behavior of the browser engine. In another word, they are not rules made by us. They are just how modern browser engine works in general.
Hope this helps.
Thanks!