因为涉及权限、范围等控制,用户每访问一个页面,都是后台程序运行的过程,尤其要命的是至少有两条以上SQL语句执行。
我知道门户类网站绝不可能这样做的,他们都是用静态页面来支撑庞大的访问量(如果也是动态唰库,那只有等死!)。那在静态页面生成、管理上有什么点子:
我想了下,归纳如下,抛砖引玉,希望大家给点子;
1、网页结构划块,用JS(或者include文件)将具有共同的部分归纳起来,方便更新;如:栏目菜单、导航等。这样以后更新某个栏目后,只要重新生成这个JS文件,就能更新整个网站的菜单栏目。
2、index页面,包括子栏目index页面定时生成,按照某种规则将最新的文章生成index,供用户访问。
3、文章存放目录按照当日日期开设,利于管理
4、将文章的title,keyword,url,栏目属性存库,主要是利于管理和修改、搜索
5、实现全文检索,可以考虑第三方的东东。这样实现在每篇文章后附带和这篇文章相类似的几篇文章。
最近正着手一个大型综合性门户网站后台管理系统(准确说是内容管理系统)设计
与规划,对网站开发技术有一个较深刻的认识。从Internet的出现到现在,WebSite的开发技术有4个过程: 1.静态WebSite,页面均为静态,无数据库支持。 2.动态WebSite,这是当前中小型WebSite使用最多的技术,也就是数据库驱动的 的WebSite 3.动态内容静态发布技术。这是当前比较先进Web开发技术。随着用户访问量的增加 ,当日访问量上万甚至更多时,Web服务器的负载迅速增大,达到满载甚至超载,大大降低 了系统的效率甚至导致系统难以运行,尽管从DBMS的升级和硬件设施的升级可以适当解决 这个效率瓶劲问题,但这大大增加了成本。另外,我们要提高在搜索引擎中的应用。搜索 引擎中的“机器人程序”在搜索过程中遇到动态网页时,比如:News.asp?Year=2003& Month=12&Date=19时,机器人程序在检索这个字符串中遇到“?”和“&”,时就会进入死循环,因此机器人程序要避免进入死循环而用的“机器人陷阱程序”,此时,它只能搜索到 News.asp这个页面的内容。而我们采用动态内容的静态发布技术后News.aspYear=2003& Month=12&Date=19这个URL转换成静态的News/2003121911062033.htm,这个静态页面的内容就是News.aspYear=2003&Month=12&Date=19生成的内容,不仅提高被搜索的概率, 而且使系统的效率提高很多(因为当Web用户请求访问这个页面是不需要向数据库系统请求 数据).这种技术在大、中型综合性网站普遍应用,如新浪,搜狐。 4.基于Cache的发布技术(反向代理)。 以前做应用的时候也用过一些方式:应用首次访问以后将生成的内容存成一个缓存文件,下次请求时从缓存目录中读取缓存文件,内容更新时,应用把内容从缓存目录中删掉,从而减少对数据库的访问。虽然这样做也能承载比较大的负载,但这样的内容管理和缓存一体的系统是很难分离的。 如果换一个思路:通过一定的分工现内容管理和缓存机制2者的分离,你会发现无论哪一方面可选的余地都是非常大的。甚至有可能利用目前的已经是“功能”比较全面的内容管理系统,而让所有“效率”问题都由前台更专业,而且是很容易分布的缓存服务器解决:可以是通过开放源代码的SQUID做反相代理的WEB加速,可以是专门的缓存硬件设备,甚至是专业的缓存服务商。 动态缓存必须有一个基于静态链接本身的参数解析过程,很多专业内容管理系统系统都是将参数解析机制做成了WEB服务器的模块实现的。 我们可以把以前的HTTP/GET方式的?key=value改为直接用/value1/value2的方式来传递,从而实现了动态页面的静态URL形式。而缓存只需要在前端加上一层CACHE服务器,比如:Squid。网站动态内容的动态缓存发布就可以实现了。 这是当前最先进的网站开发技术,实现了真正意义上的软件工程,实现开发过程 中的真正分工开发,开发过程中相互依赖大大降低,提高了开发速度。美工只管模板的 设计,页面策划师也只顾版面策划,Web程序员只顾功能模块的开发,而系统集成的程序员 只顾将页面模板和程序模块的调用和逻辑集成,实现了界面和内容完全分开,即所见所得,在网站管理中,美工可以完全不懂程序去维护模板,而技术管理员则不考虑界面去处理程序。 |