提供图片的方法和设备的制作方法

文档序号:6357654阅读:130来源:国知局
专利名称:提供图片的方法和设备的制作方法
技术领域
本发明涉及计算机技术,更具体地涉及提供图片的方法和设备。
背景技术
随着移动设备,诸如个人数字助理(PDA)、蜂窝电话等的普及,人们在生活中越来越多地利用这些设备通过电信网络进行通信、浏览网上新闻、获取信息等等。尤其是随着社交网站(例如,人人网)的兴起,人们随时随地都可以通过社交网站与自己的朋友分享内容,诸如视频、音频、图片以及语音等。移动设备将人们与网络联系地更加紧密,并因此为用户带来巨大的便利。

然而,在移动设备的用户利用移动设备浏览网页时,有时会发现呈现在移动设备显示器上的网页图片出现错位、过大或过小等,这极大地影响了用户浏览网页的体验。其原因主要在于大部分网站的网页是针对台式计算机、笔记本计算机等具有较大显示器、大量存储空间和较强计算处理能力的终端设备开发的,所以这些网页中图片的颜色、分辨率、文件格式、文件大小等不能很好地适应具有较小显示器、少量存储空间和较弱计算处理能力的移动设备。在此情况中,从网站的开发情况来看,并没有针对移动设备的用户而有太大的改变。因为移动设备的显示能力、存储能力和计算能力各不相同,如果为了适应这些移动设备,就需要在开发网页时为各种型号的移动设备准备相应的图片等网页元素。所以,单独开发适用于移动设备的网页显然会增加开发成本,并且增加开发的复杂度。总而言之,在现有情况中,移动设备的用户由于上述原因无法获得良好的网页浏览体验,特别是在浏览包括图片的网页时更是如此。

发明内容
因此,需要一种在不改变整体网页设计、不大量增加网站服务器存储空间和计算负担的情况下为具有各类参数的各种型号的移动设备提供图片的方法和设备。为了解决上述问题,本发明提供了一种用于提供图片的方法和设备。根据本发明的一个方面,提供了一种提供图片的方法,包括通过提供图片内存缓冲的服务器接收图片的请求;判断内存缓冲区中是否存在所请求的图片;如果找到适合的图片,则从所述内存缓冲区中直接获取图片以提供给所述设备。根据本发明的另一方面,提供了一种提供图片的设备,包括接收装置,用于通过提供图片内存缓冲的服务器接收图片的请求;判断装置,用于判断内存缓冲区中是否存在所请求的图片;提供装置,用于如果找到适合的图片则从所述内存缓冲区中直接获取图片以提供给所述设备。根据本发明,通过以上用于提供图片的方法和设备,可以在不大量增加服务器负担的情况下,为各类移动设备提供适应其设备能力的图片,从而使移动设备的用户得到了更好的图片浏览体验。上述方法和设备在提供图片的同时也没有增加开发成本,具有良好的成本效益。


通过对结合附图所示出的实施方式进行详细说明,本发明的上述以及其他特征将更加明显,本发明附图中相同的标号表示相同或相似的元素。在附图中
图I示意性地示出了根据本发明示例性实施方式的、用于提供图片的方法的流程图;图2示意性地示出了根据本发明示例性实施方式的、用于提供图片的设备的框图;图3示意性地示出了根据本发明示例性实施方式的、实现本发明方法的场景图;以及图4示意性地示出了可以通过其实现本发明实施方式的计算设备的框图。
具体实施例方式在下文中,将参考图示借助于实施方式对本发明的用于提供图片的方法和设备进行详细地描述。附图中的流程图和框图,图示了按照本发明各种实施方式的设备和方法体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这取决于所涉及的功能。还要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。在为移动设备提供图片的领域中,传统的解决方案采用基于squid等反向代理服务器的、基于磁盘的缓存方式来提供图片。squid机制通过以下的操作实现其功能的首先接收需要下载的目标的请求,例如一个用户希望浏览某些内容(例如,图片),他就向squid服务器请求该内容。然后,由squid服务器向存储或加载有该内容的远程服务器(例如http://3g. renren. com)发出请求以获得用户所请求的内容。在获得该内容之后,squid服务器针对用户设备的请求来处理内容(例如,裁剪图片)以适应移动设备的显示器大小等。在处理完成之后,squid服务器将该处理后的内容提供给用户的设备,同时复制一份副本存储在磁盘中以供下次同一类型的设备请求时提供。可以看出,该机制可以在某种程度上为移动设备提供合适的内容(例如,图片),但是,由于某些网站图片的大小较小(一般一个图片文件的大小不会超过5kB,绝大部分图片大小在l_2kB),且副本都存储在磁盘中,从而导致图片命中率很低而且读写和处理时不能有效地利用CPU和内存资源。而本发明的方法可以解决上述问题。现在,参考图I中用于提供图片的方法的流程图进行描述。如图I所示,在该方法的步骤SlOl中,通过提供图片内存缓冲的服务器接收图片的请求。
在本发明的一个实施方式中,在移动设备的用户希望浏览包括图片的网页时(例如,包括用户好友头像的社交网站),网站中提供的图片内存缓冲服务器将接收到该用户设备关于图片的请求。该图片内存缓冲服务器在其内存中已经存储了大量图片,如果用户设备所请求的图片存在于这些图片中,则可以从服务器的内存直接向用户设备提供所请求的服务。因此,该方法的步骤S102中,服务器可以判断内存缓冲区中是否存在所请求的图片。随后,在步骤S103中,如果找到适合的图片,则从所述内存缓冲区中直接获取图片以提供给所述设备。在本发明中,所使用的术语“内存”也称内部存储器,其作用是用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。在本发明中,“内存”可以表示缓冲数据的、并能被快速读取的任何合适类型的存储器,例如图4中的RAM 402。
在一个实施方式中,在上述过程中,服务器判断缓冲区中是否存在所请求的图片可以基于请求中包含的设备参数。该设备参数可以是某移动设备制造商的ID以及相应的设备型号,这通常代表了该移动设备的各种能力,服务器可以根据该参数来提供适应该设备的图片。例如,某款蜂窝电话的显示器大小是固定的,例如其仅能支持320*240分辨率的图片,那么服务器在获得该蜂窝电话的制造商ID和其相应型号之后,就可以从缓冲的图片中选择适合该型号移动设备的图片并且提供给该设备。这样,移动设备就能够获得符合其显示要求的合适图片来显示,而且由于服务器用于存储这些图片的存储器是内存而不是磁盘,所以在服务器查找合适图片并读取相应图片时,就可以因为内存的读写效率高而提高提供图片的效率,这显然比从磁盘中读取图片要快得多。在另一个实施方式中,在图片内存缓冲服务器接收到图片请求之后,其按照一般的处理方式去内存中查找合适的图片。然而,由于请求图片的该移动设备对于服务器而言是其原来未曾遇到过的新型号,服务器内存中可能没有其需要的图片。在这种情况下,根据本发明的方法还包括以下步骤如果未找到适合的图片,则根据请求中包含的设备参数来处理图片,将经处理的图片存储到内存缓冲区中,以及获取经处理的图片以提供给设备。特别地,在上述过程中,当图片内存缓冲服务器发现其内存中未存储所请求的图片时,其可以从存储有该图片的其他服务器获取原始图片或以自己内存中其他规格(例如,图片内容相同,但是图片的分辨率、文件大小等不符合移动设备的要求)的同一图片作为原始图片以进行进一步的处理。经过上述过程,服务器首先可以为该新设备提供其需要的图片,然后将该处理后的图片存储到内存中,以便下次再遇到该型号设备请求该种图片或其他型号设备请求同样的图片时,仍旧可以从内存中获得图片来提供给设备,从而保持了通过内存提供图片的各种优点,进而保持了本发明方法的可应付各种移动设备的优势。在不同的实施方式中,判断服务器内存中是否存在合适的图片可以根据基于所请求图片的URL和设备参数。在一个实施方式中,由于用户浏览的网页中包含的图片都具有各自的URL,那么在存储和查找内存中的图片时,可以根据该图片的URL进行存储和查找。尤其是在内存中不存在合适图片的情况下,服务器可以根据URL来存储经处理的图片。而且,在网页中,具有紧密逻辑关联的图片一般都具有类似的URL,例如社交网站上同一用户的头像、分享的图片都与该用户的个人首页紧密相关,而这些图片也相应地具有类似甚至相同的URL。因此,这样存储的好处在于可以大大地提高查找判断效率,从而更快地得到判断的结果,进而提高提供图片的效率。此外,在另一实施方式中,还可以根据请求中包含的设备参数来判断内存中是否存在合适图片。例如,根据请求设备支持的分辨率来查找图片。例如,在内存中,图片可以根据分辨率来分组存储,在接收到针对某一分辨率图片的请求之后,就可以迅速地在该分辨率组中查找图片,从而迅速地缩小查找图片的范围,最终能够更快地得到判断的结果,这有利于服务器的后续操作(例如,提供图片或处理图片)。在一个实施方式中,在上述请求中包含的设备参数还可以是以下的一个或多个设备支持的图片的长宽比例、分辨率、颜色;图片文件的大小、格式;设备的运算能力、存储器大小。这些设备参数可以向提供图片的服务器表明其所需图片的各种要求。例如,服务 器可以根据设备支持的分辨率、颜色等来处理图片,从而使图片符合相应的分辨率和颜色。这样,服务器提供的图片都是针对相应的设备定制的,从而很好地适应了各种移动设备的要求,用户浏览图片和网页的体验因而将会很好。通过上述描述,我们知道,如果判断结果是内存中没有合适的图片,则提供图片的图片内存缓冲服务器在提供图片时,可以包括处理图片和存储处理后图片的步骤。这两个步骤所使用的服务器资源是不同的,处理图片将主要利用CPU的计算能力对图片进行处理,例如,压缩图片、裁剪图片、转换图片格式等,这些处理在大量利用CPU处理能力的同时可能并无对内存的读写操作或仅需要很少的读写操作,也即I/o的吞吐量不高并且负荷不大。而在存储处理后图片时,基本上不需要CPU的参与而主要进行读写操作,这时I/O接口的吞吐量很高且负荷较大。基于上述分析,根据本发明的一个实施方式,服务器可以利用两个独立的过程来完成对图片的处理和对图片的存储。这样做的好处是充分利用了 CPU和I/O的资源,因为两个独立的过程可以同时执行,从而提高了系统资源的利用率。在相同的硬件配置下,这样的做法无疑具有更高的效率。而且,这两个过程由于独立性而不会影响彼此。换言之,如果一个过程失败,并不会影响另一个过程。这对于需要应付大量请求和服务的服务器而言无疑也是有利的。例如,如果存储图片的过程崩溃了,那么处理图片的过程仍旧继续工作,从而并不影响向移动设备提供图片,进而使得整个系统的工作仍旧有效。在一个实施方式中,上述两个独立的过程可以使用“进程”方式来实现。这在计算机系统中是比较常用的方式,具有可靠的性能,从而进一步保证了系统的可靠性。而且,由于计算机的进程方式本身具有进程间通信、进程恢复等机制,因此,两个独立的进程不但可以交换数据(处理进程将处理后的图片传送给存储进程以供存储),而且在进程发生问题而崩溃的情况下可以迅速恢复,这无疑是有利的。在一个实施方式中,在根据本发明的方法中,从内存缓冲区中获取图片可以使用异步I/o的方式。因为在传统的同步阻塞I/o模型中,使用的是惟一句柄标识的I/O通道。在该I/o模式中,当发起一次传输操作时,只有传输操作完成或发生错误,系统调用才会返回。也即,其他操作必须等待该传输操作的完成才可以继续。而在异步非阻塞I/O中,可以同时发起多个传输操作。用户程序可以向内核发出I/O请求命令,之后不用等待I/O事件真正发生就可以继续进行另外的操作。如果I/O操作完成,则内核可以通过函数回调或者信号机制通知用户进程。即,异步I/o可以在收到执行命令后在后台运行,并不阻塞用户的其他操作,从而在很大程度上提高了系统的吞吐量。
根据本发明的一个实施方式,服务器可以采用根据图片的URL进行散列的方式将经处理的图片存储到内存缓冲区中。这样做的目的在于可以提高单台服务器的缓冲命中效率,同时极大降低了 CPU重新计算图片的压力。综上所述,根据本发明的方法可以通过内存缓冲图片来提供比传统方法更高的效率,同时由于各个服务器相互独立,可以简单地通过增加服务器来进行横向扩展,从而进一步提供系统的效率。而且,处理与存储过程相互独立以及异步I/o方式,使得系统的容错能力进一步提高。通过这些方式,根据本发明的方法可以为用户的移动设备提供更加合适的图片,进而使得用户的浏览体验更加良好。下面参考图2,图2示意性地示出了根据本发明实施方式的、用于提供图片的设备200的框图。如图2所示,根据本发明的一个实施方式,一种提供图片的设备200包括接收装置201,用于通过提供图片内存缓冲的服务器接收图片的请求;判断装置202,用于判断内 存缓冲区中是否存在所请求的图片;提供装置203,用于如果找到适合的图片则从所述内存缓冲区中直接获取图片以提供给所述设备。根据本发明的另一实施方式,设备200中的提供装置203还用于如果未找到适合的图片,则根据所述请求中包含的设备参数来处理图片,将经处理的图片存储到所述内存缓冲区中,以及获取所述经处理的图片以提供给所述设备。下面结合图3的场景图进一步描述本发明的实现过程。图中301是负载均衡服务器,其主要负责向各个图片内存缓冲服务器302a、302b、302c...等分配图片请求,以保证各个服务的负载均衡,不至于造成某个或某些服务器的负载过重或过轻。但是应该理解,虽然本发明仅示出了三个图片内存缓冲服务器,但是实际中使用的服务器数量可以不等于三,并且本发明的拓扑形式并非仅限于所示拓扑形式。应该理解,在某些实施方式中,可能仅包含一个图片内存缓冲服务器。在这些实施方式中,移动设备的请求可以直接发送给该图片内存缓冲服务器,如图3中虚线所示。在另一些实施方式中,可能包含多个图片内存缓冲服务器。在这些实施方式中,移动设备的请求可以发送给均衡服务器,如图3中实线所示。根据不同的实施方式,例如在仅包含一个图片内存缓冲服务器的情况中,可以省略负载均衡服务器301。在一个实施方式中,在接收到移动设备对图片的请求后,图片内存缓冲服务器可以首先查找其内存,根据请求中包含的设备参数来判断内存中是否缓冲有所请求的图片。如果内存中存在符合要求的图片,则通过异步非阻塞I/o形式来获取图片,继而将该图片提供给请求图片的移动设备。在另一个实施方式中,如果图片内存缓冲服务器在内存中没有找到符合要求的图片,则其可以从相应的图片服务器获取原始图片或可以将内存中已有的同内容图片作为原始图片,然后根据用户设备的参数,例如分辨率、所支持的图片文件大小、图片格式等来处理该原始图片以使之符合用户设备的要求,然后将该符合要求的图片提供给用户设备,并将该经处理的图片的副本存储(缓冲)在内存中,以供下次请求时提供。在一个实施方式中,在存储图片的过程中,可以根据图片的URL来存储,这样有利于图片的查找和服务器的负载平衡。在一个实施方式中,可以以不同的过程(诸如进程)来完成图片的处理和存储过程,这样使之不会互相影响,进而提高了服务器的容错性。
根据上述的描述,本发明用于提供图片的方法和设备相对于现有技术提高了提供图片的效率,进一步改善了移动设备用户浏览网页的体验。并且由于使用了异步I/o方式和独立过程方式,提高了服务器的容错性。综上所述,本发明的提供图片方法和设备具有更快的速度,同时提高了缓存命中率,从而使提供图片更加快捷方便。下面,将参考图4来描述可以实现本发明的计算机设备。图4示意性示出了可以实现根据本发明的实施方式的计算设备的结构框图。图4示意性示出了适于实现本发明实施方式的计算机系统的框图。如图4所示,计算机系统可以包括=CPU (中央处理单元)401、RAM (随机存取存储器)402、R0M (只读存储器)403、系统总线404、硬盘控制器405、键盘控制器406、串行接口控制器407、并行接口控制器408、显示控制器409、硬盘410、键盘411、串行外部设备412、并行外部设备413和显示器414。在这些部件中,与系统总线404相连的有CPU 401、RAM 402、ROM 403、硬盘控制
器505、键盘控制器406、串行接口控制器407、并行接口控制器408和显示控制器409。硬盘410与硬盘控制器405相连,键盘411与键盘控制器406相连,串行外部设备412与串行接口控制器407相连,并行外部设备413与并行接口控制器408相连,以及显示器414与显示控制器409相连。应当理解,图4所述的结构框图仅仅为了示例的目的而示出的,而不是对本发明的限制。在某些情况下,可以根据需要增加或者减少其中的一些设备。而且,本领域的技术人员应该理解,可以实现本发明的设备并非仅限于上述计算设备,而是可以使用任何合适的其他设备。尽管本说明书包含多种特定细节,但是不应将其理解为是对本发明的范围或者所要求保护内容的限制,而应当理解为是本发明具体实施方式
的特定特征的描述。本说明书中描述的在各个实施方式的上下文中的某些特征也可以在单个实施方式中结合实现。相反,在单个实施方式上下文中描述的各种特征也可以分别实现在多个实施方式中或者任意适当的子组合中。而且,尽管上文可能将特征描述为在特定的组合中操作,甚至初始也是这样要求保护的,但是来自所要求保护的组合的一个或多个特征在一些情况下可以从该组合中去除,并且所要求保护的组合可以针对子组合或组合的变形。类似地,尽管在附图中以特定的顺序描述操作,但是不应将其理解为要求按照所示的特定顺序或是串行顺序来执行这些操作,或是要求执行全部所示的操作以得到期望的结果。在特定环境中,多任务和并行处理可能是有利的。
权利要求
1.一种提供图片的方法,包括 通过提供图片内存缓冲的服务器接收图片的请求; 判断内存缓冲区中是否存在所请求的图片; 如果找到适合的图片,则从所述内存缓冲区中直接获取图片以提供给所述设备。
2.根据权利要求I所述的方法,进一步包括 如果未找到适合的图片,则 根据所述请求中包含的设备参数来处理图片, 将经处理的图片存储到所述内存缓冲区中,以及 获取所述经处理的图片以提供给所述设备。
3.根据权利要求I或2所述的方法,所述判断基于所述所请求图片的URL和所述设备参数。
4.根据权利要求2所述的方法,其中所述设备参数包括以下一个或多个 所述设备支持的图片的长宽比例、分辨率、颜色; 图片文件的大小、格式; 所述设备的运算能力、存储器大小。
5.根据权利要求2所述的方法,其中处理所述图片和存储所述经处理的图片相互独立地完成。
6.根据权利要求5所述的方法,其中使用两个独立的进程分别完成处理所述图片和存储所述经处理的图片。
7.根据权利要求I或2所述的方法,其中从所述内存缓冲区中获取图片使用异步I/O的方式。
8.根据权利要求I或2所述的方法,其中根据所述图片的URL来将所述经处理的图片存储到所述内存缓冲区中。
9.根据权利要求8所述的方法,其中将所述经处理的图片存储到所述内存缓冲区中采用根据所述图片的URL进行散列的方式。
10.一种提供图片的设备,包括 接收装置,用于通过提供图片内存缓冲的服务器接收图片的请求; 判断装置,用于判断内存缓冲区中是否存在所请求的图片; 提供装置,用于如果找到适合的图片则从所述内存缓冲区中直接获取图片以提供给所述设备。
11.根据权利要求10所述的设备,其中所述提供装置还用于 如果未找到适合的图片,则 根据所述请求中包含的设备参数来处理图片, 将经处理的图片存储到所述内存缓冲区中,以及 获取所述经处理的图片以提供给所述设备。
12.根据权利要求10或11所述的设备,所述判断基于所述所请求图片的URL和所述设备参数。
13.根据权利要求11所述的设备,其中所述设备参数包括以下一个或多个 所述设备支持的图片的长宽比例、分辨率、颜色;图片文件的大小、格式; 所述设备的运算能力、存储器大小。
14.根据权利要求11所述的设备,其中处理所述图片和存储所述经处理的图片相互独立地完成。
15.根据权利要求14所述的设备,其中使用两个独立的进程分别完成处理所述图片和存储所述经处理的图片。
16.根据权利要求10或11所述的设备,其中从所述内存缓冲区中获取图片使用异步I/o的方式。
17.根据权利要求10或11所述的设备,其中根据所述图片的URL来将所述经处理的图片存储到所述内存缓冲区中。
18.根据权利要求17所述的设备,其中将所述经处理的图片存储到所述内存缓冲区中采用根据所述图片的URL进行散列的方式。
全文摘要
本发明公开了一种提供图片的方法和设备。一种提供图片的方法,包括通过提供图片内存缓冲的服务器接收图片的请求;判断内存缓冲区中是否存在所请求的图片;如果找到适合的图片,则从内存缓冲区中直接获取图片以提供给设备。
文档编号G06F17/30GK102737034SQ20111008576
公开日2012年10月17日 申请日期2011年3月30日 优先权日2011年3月30日
发明者周游, 闫志东 申请人:北京千橡网景科技发展有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1