Это проверенное решение для большого сайта, которое работает.
Во-первых, чтобы избежать конкуренции между ресурсами целевой страницы и предварительно загруженными ресурсами для полосы пропускания, вы можете отложить загрузку с помощью javascript:
var prevOnLoad=window.onload;
function onLoadPreloadComponents() {
if(prevOnLoad) {
try{
prevOnLoad();
}catch(err){
}
}
preloadSiteComponents();
}
window.onload=onLoadPreloadComponents;
Это не тот способ, которым я решил это, потому что в моем случае использования событие flash (с использованием Flash to JS brigde) сигнализирует, когда приземление было наконец загружено. Но предыдущий код тоже должен работать. Когда браузер генерирует событие load page , эта функция выполнит предыдущий код onLoad и предварительную загрузку.
Я положил пустой контейнер для монет div, куда будет загружен iframe.
<div id="mainSiteComponentsContainer" style="display: none;">
</div>
И код функции:
function preloadSiteComponents() {
try{
document.getElementById('mainSiteComponentsContainer')
.innerHTML=
"<iframe src=\"http://www-components.renxo-cdn.net/preload-site-components-data-url-scheme-version-1.2.84-css-1.0.53.html\" frameborder=\"no\" height=\"0px\" width=\"0px\"></iframe>";
}catch(err) {
}
}
Как вы могли видеть, URL ссылки на iframe является динамическим, он изменяется между разными версиями платформы (различные развертывания), чтобы избежать нежелательного кэша браузера при новых развертываниях.
HTML-код, который будет в iframe, может выглядеть примерно так (например):
<html class=" gecko win js" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta content="noindex,nofollow" name="robots">
<script src="http://www-components.renxo-cdn.net/scripts/lib-1.2.84.js" type="text/javascript">
<link href="http://www-components.renxo-cdn.net/styles/skin-data-url-scheme-1.0.53.css" media="all" type="text/css" rel="stylesheet">
</head>
<body> </body>
</html>
Здесь вы можете увидеть ссылки на компоненты, которые я хочу предварительно загрузить.
Наконец, у divtainer будет iframe. После события onLoad:
<div id="mainSiteComponentsContainer" style="display: none;">
<iframe width="0px" height="0px" frameborder="no" src="http://www-components.renxo-cdn.net/preload-site-components-data-url-scheme-version-1.2.84-css-1.0.53.html">
<html class=" gecko win js" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta content="noindex,nofollow" name="robots">
<script src="http://www-components.renxo-cdn.net/scripts/lib-1.2.84.js" type="text/javascript">
<link href="http://www-components.renxo-cdn.net/styles/skin-data-url-scheme-1.0.53.css" media="all" type="text/css" rel="stylesheet">
</head>
<body> </body>
</html>
</iframe>
</div>
Вы можете увидеть рабочее решение здесь .
Используйте Firebug для просмотра отложенной загрузки этих компонентов.