これは、動作する大量のサイトでテストされたソリューションです。
まず、ランディングページのリソースとbandwithのプリロードされたリソースとの競合を避けるために、javascriptを使用してロードを遅らせることができます。
var prevOnLoad=window.onload;
function onLoadPreloadComponents() {
if(prevOnLoad) {
try{
prevOnLoad();
}catch(err){
}
}
preloadSiteComponents();
}
window.onload=onLoadPreloadComponents;
私のユースケースでは、着陸が最終的にロードされたときにフラッシュイベント(Flash to JS brigdeを使用)が通知するため、これは私がこれを解決した方法ではありません。ただし、前のコードも同様に機能する必要があります。ブラウザによってページの読み込みイベントが発生すると、この関数は以前のonLoadコードとプリロードを実行します。
iframeが読み込まれる場所に空のdivコインテイナーを配置しました。
<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) {
}
}
ご覧のとおり、iframeへのリンクURLは動的であり、新しい展開で不要なブラウザーキャッシュを回避するために、異なるプラットフォームバージョン(異なる展開)間で変更されます。
iframeに含まれる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>
ここに、プリロードしたいコンポーネントへのリンクが表示されます。最後に、divcointainerは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を使用して、このコンポーネントの遅延ロードを確認します。