数据库存取图片的优化算法

2011-08-20 05:18张祖莲李景林王命全李少雪任宏宇
网络安全与数据管理 2011年21期
关键词:网页页面服务器

张祖莲 ,李景林 ,王命全 ,李少雪 ,任宏宇

(1.新疆气象局 新疆兴农网信息中心,新疆 乌鲁木齐 830002;2.新疆维吾尔自治区人大常委会办公厅,新疆 乌鲁木齐 830002;3.河南省许昌市94537部队司令部,河南 许昌 461101)

互联网上几乎所有网页都由图片和文字组成,许多大型网站都涉及图片管理功能的实现。在网络环境中,由于图片文件相对较小,因此比音频和视频文件更加便于传输。在很多应用领域中出现了对专用的网络环境下图片数据库的需求,即利用数据库平台实现图片大量的集中存储,同时以网络为连接,通过基于HTTP协议的网络浏览器实现对数据库(包括图片数据)的远程访问[1]。

网页中图片的加载速度直接影响该网页打开速度。访问者认为,打开速度较快的网站质量更高、更可信、也更有趣;网页打开速度越慢,访问者的心理挫折感就越强,就会对网站的可信性和质量产生怀疑。

基于以上情况,如何有效提高网站页面打开速度,是每个网站管理者和开发人员非常关注和必须解决的问题。本文通过对数据库如何存取图片的研究,提出了一种优化算法。

1 图片存取的方法分析

目前网页上的图片存储一般有两种方法:

(1)将图片以独立文件的形式存放至服务器中,同时在数据库对应表中的文本类型字段中存放该图片的文件路径[2]。这种方法具有缩小数据表,提高数据库相关操作速度且容易编程实现的优点,但是却造成了图片及其描述信息的分离,如果数据过期或不用而删掉,对应图片没有删掉,仍占着服务器空间[1]。

(2)将图片直接放入数据库对应表的image数据类型字段中,使得图片和数据描述成为一个整体[3]。这种方法存放的图片格式很灵活,管理很方便,而且安全性也很好,最重要的是,如果过期或不用的数据删掉,对应的所有图片及相关信息也都删掉,不再占用服务空间。但是如果图片越大,占用数据库存储空间也越大,网页打开加载图片也就越慢[1]。

在目前的研究中,采用第二种方法存取图片时,基于移动设置优化PNG图片,在PNG图片的数据结构中,部分数据块是可选的,剔除可选数据段,对PNG进行适当的处理,可以有效减少占用空间,优化移动设备上的图片应用。图片处理前后的大小相差很多,结果很不稳定[4]。

本文采用第二种存取图片的方法,针对图片占用数据库存储空间过大、网页加载图片过慢的问题,提出了优化图片算法。

2 建数据库建表

本实验采用转换为二进制的方式将图片文件的全部数据存储到image[5-6]字段中,使用时再通过特定的过程将二进制信息转换成原来格式的文件内容,从而真正地实现数据的整体存储,避免了平台更换和数据移植时可能带来的记录失效问题。

(1)在数据库SQL 2005中建立testimgbig和testimgsmall两个数据库;

(2)在两个数据库中分别建表 imgbig和 imgsmall,如表1和表2所示;

表1 imgbig表

表2 imgsmall表

(3)分别在两个数据库中建立Addimgbig和 Addimgsmall两个存储过程。

3 实验过程

本实验采用C#编程语言,Visual Studio 2005开发工具,Microsoft SQL Server 2005数据库以及 IIS5.0,在服务器的网站根目录下建立“tmpimages”及两个子文件夹“img1”和“img2”。

3.1 数据库存取图片流程

(1)未优化图片存入数据库流程。将本地图片上传到服务器“tmpimages/img1”文件夹下,在服务器端将上传的图片转化为字符流存入数据库;

(2)优化图片存入数据库流程。本地图片上传到服务器“tmpimages/img1”文件夹下,在服务器端将上传的图片进行优化处理,然后将图片存到服务器“tmpimages/img2”文件夹下,同时将“img2”中刚优化的图片转化为字符流存入数据库;

(3)读取图片流程。连接图片所在数据库,找到此图片表名及字段,然后将对应图片ID号的字符流转化为可视图片。

3.2 相关核心代码

(1)将图片存入数据库的相关核心代码

(2)优化图片的相关核心代码

4 实验数据

页面加载时间测试方法:用秒表在本地机上测试。测试未优化和优化后各20次,去掉差距较大的4个,然后取平均数。

图片选用使用数码相机拍摄的未处理的图片 (主要是为了更容易测试算法有效性),上传的所有图片都是同一张图片,以便于比较。

进行数据库备份。当备份到 1、10、20张图片时,分别备份一次。

实验结果如表3所示,部分数据如图1~图4所示,测试页面如图5所示。

表3 实验数据

图1 未优化图片

图2 优化后图片

图3 未优化1张图片数据库备份

图4 优化后1张数据库备份

图5 测试页面

在测试页面中,未优化图片和优化图片的显示从视觉上效果一样,并没有出现因为压缩而丢失像素模糊现象。

由以上数据可以看出,本文提出的存取图片优化算法是一种有效的图片压缩、优化方法,同时能节省数据库容量,明显提高了网页加载图片速度。在服务器的“img1”和“img2”文件夹中的图片可以定期删除掉,不占用服务器空间。

本文测试是在本机上进行的,用了同一张原图片测试,明显看出页面加载时间的差距和数据库的容量。大型网站有更多图片,如果采用优化算法,将大大减少页面加载时间和数据库容量,同时不占用服务器空间,有效提高网页打开速度。

本算法在基于Web网站开发中对图片处理?具有很高的实用价值,用C#、Java语言开发网站都可以借鉴此算法。本文只是在本机上用该算法对少量图片进行测试,当有大数据量时,该算法效果将更加明显。虽然图片的像素降低从视觉效果上差别不大,但如果对图像精确度要求特别高还有待考虑,该算法还有待不断改进和优化。

[1]李伟民,何伟,李平.基于 Web的 SQLServer数据库存取图片的 Delphi实现 [J].计算机工程与设计,2007,28(12):2943-2945.

[2]战仁军,张明书.图像文件在数据库中的存取[J].西安工程科技学院学报,2003,17(4):369-372.

[3]张永仁,黄科军,李德孝.基于数据库的文件管理[J].计算机工程与设计,2006,27(11):2044-2045.

[4]徐逸卿,刘林.基于移动设备的PNG图片优化实现[J].多媒体技术及应用,2008,3(9):2070-2075.

[5]郭东青,李佳,刘彬彬.数据库创建、数据仓库与优化[M].北京:清华大学出版社,2001.

[6]古凌风.用ADO技术实现数据库图像字段的存取[J].计算机工程与设计,2004,25(8):1388-1392.

猜你喜欢
网页页面服务器
刷新生活的页面
基于HTML5与CSS3的网页设计技术研究
通信控制服务器(CCS)维护终端的设计与实现
基于CSS的网页导航栏的设计
基于HTML5静态网页设计
基于URL和网页类型的网页信息采集研究
中国服务器市场份额出炉
得形忘意的服务器标准
计算机网络安全服务器入侵与防御
Web安全问答(3)