门户站点静态发布的设计与实现
门户站点静态发布的设计与实现之前写过一片文章讲述了门户首页静态发布解决方案(访问网址:http://infinite.iteye.com/blog/235109),本篇文章继续深入谈谈如何发布门户整站。门户站点的页面可大致分为以下几类:
1、 门户首页
2、 二级页面(或称栏目页)
3、 三级页面(或称文章页)
4、 全文检索结果展示页面
5、 控制台管理页面
其中需要前面三种类型的页面是需要发布成静态的,另外发布还分两种情况:
1、整站发布:从首页开始发布整个站点。
2、单页发布:根据指定的发布页,发布其及其页面上的所有链接,但页面上链接发布出来的页面上的链接不再继续发布。单页发布主要出于增量发布的需要,比如某栏目下新增加了文章,就可单独对该栏目对应的页面进行单独发布,无需每次都整站发布。
为提高性能,避免对一些不变的页面进行不必要的重新发布(比如文章页),特定以下规则:
1、如果已存在的发布页面列表不包含当前要发布的页面,则发布该页面
2、如果包含,且非文章页,则发布该页面
3、如果包含,且是文章页,且非第一个发布页面,则不再发布该页面
4、如果包含,且是文章页,且是第一个发布页面(单个文章页发布时),则发布该页面
另外对是否发布页面上链接地址,也定以下规则:
1、如果是整站发布,当前发布页面非文章页,则发布其上所有链接
2、如果是整站发布,当前发布页面为文章页,则不发布其上所有链接
3、如果是单页发布,且当前发布页是指定页本身,则发布其上所有链接
4、如果是单页发布,当前发布页非指定页本身,则不发布其上所有链接
具体的发布实现过程参照网络爬虫的原理,具体如下:
1、 从首页开始,使用HttpURLConnection模拟浏览器发起一个请求,通过读取请求响应的内容来抓取页面内容,保存到本地的静态html页面里;
2、解析该新保存的页面内容(使用一个叫HtmlParser的开源包),获取页面里的所有链接,过滤出需要发布成静态页面的url地址。
3、 对这些url地址逐个重复进行1、2两步的操作。
4、将静态页面里的动态url地址替换成新发布出来的静态html页面地址。
以上过程其实是个深度发布的过程,从首页到栏目页,再一直到文章页,从而将整个站点的所有页面都抓取下来。
页:
[1]