您的位置:首页 > 数据库

WEB网页中的分页技术及其应用

2005-01-10 22:50 471 查看
WEB网页中的分页技术及其应用(原创)

WEB网页中的分页技术及其应用 原创作者: ASP精品屋
WEB网页中的分页技术及其应用 - 序言

    分页技术在计算机上应用非常广泛,论硬件,计算机的系统内存中使用了分页技术,利用分页技术将线性地址转换为实际地址。论软件,为了实现虚拟内存,Windows利用了386以上CPU提供的内存分页技术,这些CPU支持把内存分成4KB为单位的一个个“页面”。而今,WEB中引入了数据库技术,大量的数据处理需要用到分页技术。系统内存、虚拟内存、数据库三者之所以都要用到分页技术,是因为它们有一个共同的特征,即它们的地址或数据的排列都是线性的,需要通过分页技术来标识它们中的某一段或某个地址位置。我还没看过对于分页的定义,但可以知道,分页是用来标识某项事物的地址或位置。

    在数据库中,大量的数据处理通过WEB来输出并传送到客户端,为了减少传输量和更精确地查找数据,很需要用到分页技术。目前分页技术已经广泛应用到互联网页的每个角落,包括搜索引擎、 BBS、网上黄页、电子商务及其它相关的拥有一定信息量的各项应用邻域。分页技术在目前已经成了WEB开发不可缺少的一部分。此文也仅限讨论WEB开发中与数据库相关的分页技术。

 

WEB网页中的分页技术及其应用 - (一)

数据库的大小
目前的动态网站一般都需要数据库的支持,根据数据量(记录数)的多少,可以分为微型数据库(1万以内),小型数据库(10万以内),中型数据库(100万以内),大型数据库(大于100万)不等。分页技术的一个重要作用就是为了提高服务器端的运行效率(其实也就是速度),如果在采用的分页技术没能达到提高效率的目的,是需要改善分页方式的时候了。

首先我们需要介绍一番分页的一些常用功能:
翻页功能
第一页: 查看所有符合条件的数据的第一页数据
上一页: 查看相对于当前数据库所在页的上一页数据
下一页: 查看相对于当前数据库所在页的下一页数据
最后一页: 查看所有符合条件的数据的最后一页数据
转到指定页: 查看所有符合条件的数据的指定页数据

统计功能及标定位置功能
统计总符合记录数、页数,标识当前查看的记录是第几条到第几条,在第几页。

几种常用的分页方式
1.包括上述的所有分页技术的功能,一般此类数据库的记录数都比较少
2.只有第一页,上一页,下一页,最后一页的翻页功能,其它的可能会有总符合记录数,页数的统计,此类数据库一般都比较大
3.仅有第一页和下一页,或仅有上一页和最后一页。这类数据库应该是趋向于大型,并尽量只用一句SQL语句查询来减少数据库的执行时间,可以加上总记录数及页数的统计。
4.仅返前面N条符合条件的记录,并可以使用所有的翻页功能,总符合记录数及页数只能作估计处理。一般来说,搜索引擎采用的都是这种方式。

上页的第二、三种分页方式不能采用标识当前查看的记录是第几条到第几条,在第几页的功能,似乎不符合原先所述的分页定义,其实,分页需要有一个位置标识才能完成分页,即在数据库中要有相应的可以跟踪的字段。只不过它们一次只能标识一个节点,达不到页面之间的任意转换查看。

功能直接影响着分页的速度, 当然,如果数据库越是大型,影响会越明显和严重。下面是各种数据库的建议拥有功能:

微型数据型: 由于数据量比较少,所受的速度影响也最小,为了网站访问方便,建议将所有功能都用上。
小型数据库: 建议采用第二种分页方式,这样网站会比较稳定,比如一些访问量很高的BBS,比如新浪的论坛。
中型数据库: 可以采用第二种或第三种方式,如果觉得用第二种方法速度嫌慢,建议采用第三种方式。
大型数据库: 如果需要遍历所有的数据,建议采用第三种方式,如果仅需返回前面的一部分数据,建议采用第四种。

WEB网页中的分页技术及其应用 - (二)

分页的执行效率如何才能称得上高效率?
我们将一次性完成所有的分页功能叫完成一次分页,无论怎么多的数据,完成一次分页的执行时间不应该超过100毫秒,即0.1秒。如果总是大于200秒毫,我想你应该换种分页方式了,并减少一些分页中的功能。时间就是生命,在程序中亦是如此。

一般数据库的WEB分页通过一些脚本语句(包括CGI)来实现,比如ASP,PHP和JSP等等,数据库的执行效率直接影响着系统的稳定性和访问承受能力。20%的代码占用了80%的执行时间已经是编程中的经典词句,在分页的实际应用中我们还应该不断地测试所运行的各种代码,找出程序中消耗时间瓶胫,将会使你写出来的程序更加的稳定和专业。

下面是一段得到当前时间的JScript函数,精确到毫秒:

<script language=jscript runat=server>
function GetTime()
{
var d = new Date();
return d.getTime();
}
</script>

在需要测试的程序两端分别用此函数得到两个执行时间值即可测试出代码的执行时间。
2001年6月29日 探索者 Webmaster@asphouses.com
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息