« 上一篇 IT行业营销建议瀑布流页面性能优化(绝对定位实现方式) 下一篇 »

瀑布流网站虽酷,但需考虑搜索引擎收录问题

如果你去SEO交流论坛发帖“瀑布流网站对SEO有没有影响”, 得到的答案多数是:“超过125K以后的内容基本上是抓取不到了。具体你可以查看你的快照。但是瀑布对用户体验很好,所以这个还是需要坚持的。SEO的影响就是内部入口引导会减少。” 但是SEO祥子在这里强调一下,这绝对是个误区。目前搜索引擎尤其是百度是不能解析Ajax输出内容的!

SEO祥子关于瀑布流SEO作法是:

   1. 瀑布墙TOP N条记录(比如前20-50条)采用HTML的方式,是用户打开页面就默认加载的内容;
2. TOP N +1 条记录开始使用Ajax瀑布流加载,即在用户滑动鼠标到页面底部时才加载;
3. 建立HTML地图,引导搜索引擎爬虫收录文章页面。

当然,网上也有其它的方法,但是我没有测试过,效果不得而知,仅供参考:

瀑布流一般为4列形式输出,大多用ajax动态读取数据延后延迟加载输出。用js输出后的代码大多数不能被搜索引擎收录,这样除了UI体验很不错外,基本上没有所谓的SEO可说了。困惑很久终于找到一个很不错的解决方法,可以兼顾页面刷新随机展示,SEO,和延迟加载的办法。方法如下:
1、首先解决延迟加载问题,用jquery 1.4.1版和lazyload.js [PS:自己可以上网找]
2、把数据取出的数组随机重置,延后计算数组个数,之后简单运算每列排的个数,分别赋值给每一列。
3、输出这些列。
由于加入数组随机打乱次序,可以保证每次打开页面时候排版不同,用lazyload方法可以增加用户体验。

下面是一个php的实现瀑布流对搜索引擎友好收录的案例

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
<?php
if($rs){
$narr = (array)$rs;
$num = count($narr);
shuffle($narr);
$h1 = $h2 = $h3 = $h4 = "";
$_l = intval($num/4);
$_m = $num%4;
//*此算法保证从第一列开始追加多余的
$_a1 = $_m ? ($_l+1) : ($_l*1);
$_a2 = ($_m-1>0) ? ($_a1+$_l+1) : ($_a1+$_l);
$_a3 = ($_m-2>0) ? ($_a2+$_l+1) : ($_a2+$_l);
/*此算法保证有多余的从第二列开始追加多余的
$_a1 = $_l*1;
$_a2 = $_m ? ($_a1+$_l+1) : ($_a1+$_l);
$_a3 = ($_m-1>0) ? ($_a2+$_l+1) : ($_a2+$_l);*/

foreach($narr as $k=>$v){
if($k<$_a1){
$h1 .= '<div class="servbox">第一列数据</div>';
}else if(($k<$_a2)&&($k>=$_a1)){
$h2 .= '<div class="servbox">第二列数据</div>';
}else if(($k<$_a3)&&($k>=$_a2)){
$h3 .= '<div class="servbox">第三列数据</div>';
}else{
$h4 .= '<div class="servbox">第四列数据</div>';
}
}
?>
<div class="servlist">
<?php echo $h1;//这里显示第1列 ?>
</div>
<div class="servlist">
<?php echo $h2;//这里显示第2列?>
</div>
<div class="servlist">
<?php echo $h3;//这里显示第3列?>
</div>
<div class="servlist" style="padding-right:0;">
<?php echo $h4;//这里显示第4列?>
</div>
<?php } ?>