分面导航的详细操作方案
最近群里讨论的比较火热的就是分面导航如何处理,在这里我说说我自己的一些想法吧。丑话说在前面,民工不常写文章,文笔是差点,大家能看懂多少就看多少吧。
首先,什么是分面导航相信各位都清楚吧,例如中关村的报价库索引页就是采用的分面导航。
像太平洋的报价库
http://product.pconline.com.cn/mobile/samsung/p3269/
说一下制作分面导航需要注意的地方。
一、分面导航因为可以通过不同条件的组合,从而产生非常多URL,如果不加以限制,一方面会大量的消耗蜘蛛的抓取,另一方面由于多条件的组合页面需要多条件组合查询数据库,随着组合的条件越来越多,对数据库服务器的消耗的就越厉害,在遇到像360或soso这种流氓爬虫的时候很容易把你服务器给爬死。
二、因为产品的数量其实是有限的,但是各种条件的组合方式却是非常多的,这就导致了大量的空白页面。大量空白页面会导致网站的评级降低,甚至K站也是经常见的。
假如我要做一个分面导航,我会怎么做?
我的思路是robots.txt + 组合条件控制
一,首先是robots.txt
因为各种不同的条件组合是可以在一定程度上命中关键词,但是随着条件的增多,命中关键词(命中用户搜索需求)的几率会大大降低,页面质量也会越来越难控制,所以控制只要蜘蛛抓取一定层级的页面能大大降低风险。那么既然要用到robots.txt,我们制定的URL就必须是有一定的规律的。
首先来看看下面2种URL,哪种会更好呢?
太平洋 : http://product.pconline.com.cn/mobile/samsung/p3269/c4927/
某基友网站的链接 : http://www.xxxxx.cn/cartype/28-6 ... order-ASC-grid.html
哪种更好呢?
此处省略一万个换行
答案是2种都不好,哈哈哈!
太平洋的URL方式少了分面导航URL的标示符,不方便写robots.txt,容易错封。
第二个链接有标示符,但是太长了,组合了多少个条件没有体现。
理想的方式:
www.xxxx.com/list_s423_s524_s842.html
robots.txt
添加4条记录
disallow: /list*.html
allow: /list_*.html
allow:/list_*_*.html
allow:/list_*_*_*.html
就可以达到只让蜘蛛爬3级组合的页面了。
这时候程序员可能会说,这样的URL没办法实现啊,参数不知道怎么传。
这里我也说说这种URL结构传参数的原理吧。
www.xxxx.com/list_s423_s524_s842.html
首先这个是个伪静态的URL,原始动态的URL可能是这样的。
www.xxxx.com/list.php?tag=s423_s524_s842
这样list其实拿到的是 tag参数对应的值是s423_s524_s842
这时候可以将tag参数的值按 "_"切分成数组,变成下面的数组
array("s423","s524","s842")
再对数组的每个元素进一步解析,每个元素取前2个字符作为参数,其余的作为值。
就变成
s3=23
s5=24
s8=42
s3,s4,s5分别对应着产品的不同属性,23,24,42分别对应着产品的不同属性值。
这样这个URL的解析就完成了。
二,组合条件控制
大家可以去看看太平洋报价库的分面导航,没有结果的条件是不可点的。中关村采用的是没有结果的URL采用nofollow标签nf掉。但是民工觉得NF还不够彻底,直接不要让搜索引擎知道有个链接是最好的。
那么怎么实现这一个效果呢,这里就要判断哪些条件组合是没有结果的。民工想了一个办法,在产品数不是很多的情况下可以实现,像淘宝那样级别的就另当别论了。
首先,当我们选择第一个条件的时候,我们需要把所有符合条件的商品全部查询出来,SQL语句想当简单,select * from XXX where XXX = XXX
假如,这个类产品有三个属性 aa bb cc ,那么就遍历结果集,把所有商品的aa bb cc属性都放到3个数组里
假如只有4个商品,数据可能是下面这样的
aa=[1,1,2,4]
bb=[2,2,4,2]
cc=[g,w,g,r]
对3个数组去重可以得到
aa=[1,2,4]
bb=[2,4]
cc=[g,w,r]
因为假如增加条件,等同于对现有的结果做进一步的筛选。所以,只有用户选择了上面的几个属性值之一才可能会有结果,这样我们就可以判断出哪些选项是可以继续筛选的,哪些选项是没有结果的。
但是有人会说,这样要遍历所有符合前面条件的商品啊。首先,这一个过程只做了一次的数据库查询,只是计算量会比较大,只要配合缓存我觉得问题不会很大。像代理缓存:如nginx,还有数据库缓存如mencached,一个能减轻web服务器压力,一个能减轻数据库查询压力,这样能保证页面访问速度。
好了,上面是我对分面导航怎么实现的一些想法,还没有真正上过,不知道效果会怎么样。
扯了一大堆,发现外链还没发完,赶紧先发外链去了……
注:本文章只供ITSEO内部交流,禁止转载!
分面导航的详细操作方案相关推荐
- 【安装篇】- 基于 VMWARE Oracle Linux7.9 安装 Oracle19c RAC 详细配置方案
作者 | yanwei 来源 | 墨天轮 https://www.modb.pro/db/95684 大家好,我是 JiekeXu,很高兴又和大家见面了,今天和大家一起来看看 Linux7.9 安装 ...
- 虚拟机硬盘启动计算机后黑屏,高手亲自教告诉你win7虚拟机启动后黑屏的操作方案...
windows系统非常经典,我们在办公和娱乐的时候都会用它.你在使用系统的时候有没有遇到win7虚拟机启动后黑屏问题呢?确实这个win7虚拟机启动后黑屏的问题对于很多用户来说比较少见,遇到了就不知道如 ...
- MTK Secure Boot 2.1详细配置方案-终极版
1. 目的/背景 此文档使用了secure boot 2.1方案的配置,如有其他版本的secure方案,本文档仅作参考,secure boot方案可在security MTK文档中查到,也可以咨询MT ...
- 【CSDN云IDE】个人使用体验和建议(含超详细操作教程)(python、webGL方向)
[CSDN云IDE]个人使用体验和建议 (含超详细操作教程)(python.webGL方向) 文章目录: 一.CSDN云IDE简介 二.新建工作空间 三.管理你的工作空间 (3.1).工作空间基本信 ...
- jbod ugood 磁盘驱动状态_AS SSD Benchmark查看硬盘状态的详细操作步骤
最近很多朋友咨询关于AS SSD Benchmark怎么查看硬盘状态的问题,今天的这篇教程就来聊一聊这个话题,希望可以帮助到有需要的朋友. AS SSD Benchmark查看硬盘状态的详细操作步骤 ...
- 知乎引流回答问题需要注意什么?详细的方案一路指引
知乎引流回答问题需要注意什么?详细的方案一路指引 我从3年前就开始在知乎上引流,一路见证了知乎的发展历程,也是被知乎虐的没脾气. 知乎平台最早是走高端精英路线,玩的也都是高学历人士,但是这样下去知乎一 ...
- 短视频运营:如何做自媒体?新手入门的详细操作分享
经常听到这样一些言论,目前自媒体已经过时了,普通人根本挣不到钱,真相是否像别人说的一样呢? 其实,在我们身边经常会看到一些网红大V,一个月轻轻松松月入百万.月入千万的人已经大有人在,而这些网红往往都是 ...
- SPSS详细操作:样本均数间的多重比较
SPSS详细操作:样本均数间的多重比较 下面我们用例子来探讨:方差分析得出各组总体均数间的差异有统计学意义之后,如何进行样本均数间的多重比较. 一.问题与数据 为调查A.B.C三种治疗措施对患者谷丙转 ...
- 百度收录批量查询_峰少课堂 手把手教你操作百度霸屏!(内附详细操作笔记!)...
今天峰少课堂给大家讲解的是操作百度霸屏,一个月赚6000块!(内附详细操作笔记!) 看完可以直接拿去实操,没有效果你来找我啊哈哈哈哈哈!!之前我就是在公司摸索出了这套方法,然后专门找了一个文案做百度霸 ...
最新文章
- onKeyPress与。 onKeyUp和onKeyDown
- [转] 使用nginx sticky实现基于cookie的负载均衡
- SetConsoleCtrlHandler 处理控制台消息
- 03-SpringMVC-获得用户请求数据
- Java多线程:线程间通信之Lock
- Hadoop入门(七)Mapreduce高级Shuffle
- php课程设计实验心得,PHP程序设计教程实验及课程设计
- VMware:警惕 vSphere Web Client中的新漏洞
- 【转载】关于.NET下开源及商业图像处理(PSD)组件
- unity player 显示播放错误时的解决办法
- Codeforces Round #483 (Div. 1) A. Finite or not?
- ASP.NET 服务端GZIP压缩
- Web开发之Session
- linux服务器怎么连接
- java代码压缩文件
- 三重积分的轮换对称性及极坐标形式确定上下限
- uni-app 评论五星
- 基于pytorch的sque2suqe with attention实现与介绍
- 二叉树 | 二叉树的镜像(翻转)
- sunyueonline.com最新SEO成果显著,百度百科收录“孙越”