次の手法を使用して、サイトの画像を遅延読み込みします。
すべての画像について、src
属性にデフォルトimg(つまり、ローダー)のURLを入れ、data-src
属性に実際の画像URLを入れます。そのようです
<img src="loader.gif" data-src="img1.jpg" />
画像がビューポートの外側にある場合、何も起こりませんが、画像がビューポートの内側にある場合、data-src
属性からのURLがロードされ、画像が正しく表示されます。
その結果、Googleはページ(つまり、検索結果ページ)内のすべての画像が同じsrc
属性を持っていると見なします。 Googleボットはもちろん、デフォルトのsrc
を持つ 'unloaded' imgタグのみを解析するためです。
私の質問は:同じsrc
属性を持つ多くのimgタグを持つことはページのSEOに影響します?
画像の遅延読み込みがWeb検索のランキングに悪影響を与えるのを見たことはありません。ユーザーのサイトの知覚パフォーマンスを改善すると、ランキングの向上に役立ちます。サイトのパフォーマンスの問題が原因で検索結果に戻るユーザーが少なくなると、ランキングが向上します。
Googleは、画像検索のために遅延読み込みされた画像のインデックスを作成できません。代わりに、次のような技術的な修正が可能です。
<noscript>
タグを使用する<a href="/img_large/foo.jpg"><img data-lazy-load="/img_thumb/foo.jpg" src="/img/1x1_transparent.gif"></a>
ほとんどの検索エンジンは、インラインスタイルを使用して画像を非表示にしない限り、非表示の画像にインデックスを付けます。ほとんどのブラウザは、非表示の画像をnotロードします。
この主張を検証できるテストページがあります。一部の古いモバイルブラウザは例外ですが、携帯電話での遅延読み込みは優れたブラウジングエクスペリエンスに逆効果になる可能性があると主張します。
http://www.w3.org/2009/03/image-display-none/test.php
CSSファイルに次の変更を追加します。
.lazy-img { display: none; }
これで、このような遅延イメージを含むページをロードでき、インデックスが作成されます。
<body>
<img class="lazy-img" src="img1.jpeg" title="image title"/>
<img class="lazy-img" src="img2.jpeg" title="image title"/>
<img class="lazy-img" src="img3.jpeg" title="image title"/>
<img class="lazy-img" src="img4.jpeg" title="image title"/>
</body>
画像にtitle
属性を含めることが重要です。または、<img
>タグをリンク<a
>タグとリンクテキストで囲みます。それ以外の場合、検索エンジンはWordの距離によってキーワードを画像に関連付けます。あなたはSEOのためにこの問題をすべて解決するつもりです。
上記をそのまま使用する場合。画像が非表示になっているため、何も表示されません。ドキュメントの下部にあるこのクラスを削除します。ここで重要なのは、インラインの純粋なJavascriptを使用することです。このJavascriptは、上記の要素のレイアウトが終了した直後に実行されます。すべての外部JSファイルを下部にロードする場合(必要に応じて)。これらのファイルの上にこのJavascriptブロックを配置する必要があります。そのため、DOMの変更に遅れはありません。
<body>
<!--[if lte IE 8]
<style type="text/css">.lazy-img { display: block !important; }</style>
[endif]-->
<noscript><style type="text/css">.lazy-img { display: block !important; }</style></noscript>
<img class="lazy-img" src="img1.jpeg" title="image title"/>
<img class="lazy-img" src="img2.jpeg" title="image title"/>
<img class="lazy-img" src="img3.jpeg" title="image title"/>
<img class="lazy-img" src="img4.jpeg" title="image title"/>
<![if gte IE 9]>
<script type="text/javascript">
var images = document.getElementsByClassName('lazy-img');
Array.prototype.forEach.call(images, function(image){
image.setAttribute("data-src",image.getAttribute("src"));
image.setAttribute("src","loading.gif");
});
while(images.length > 0) { images[0].className = ""; }
</script>
<![endif]>
</body>
IE9は8以前のgetElementsByClassName
をサポートしていないため、条件式を追加しました。何が起こるべきか(テストされていない)は、これらのブラウザは画像をそのままロードするだけです。
このアプローチの利点は、Webクローラーの観点からHTMLをきれいに保つことです。
Googleは、ボットでJavaScriptを実行することを宣言しました。詳細については、 この投稿 を参照してください。
文書化されているように、動的クロールのためにGoogleBotに静的ファイルを禁止することはできません。