CIFS应用优化方法及装置技术领域
本发明涉及网络技术领域,特别是涉及一种CIFS应用优化方法及装置。
背景技术
CIFS(Common Internet File System,通用Internet文件系统)是微软的
Windows主机间通过网络进行文件共享的服务,通常称之为网上邻居。CIFS服
务采用客户端/服务器模式。客户端请求远在服务器上的服务器程序为它提供服
务。服务器获得请求并返回响应。使得位于客户端的用户可以像访问本地文件
一样读写远程主机的文件,并且能够和其他用户进行文件共享和协作。CIFS服
务还可以在网络断线后自动恢复。这些机制使得CIFS在各个企业内应用得非常
广泛。
CIFS服务开发的初衷是在局域网内共享文件,而随着现代信息技术及经济
全球化的发展,企业和机构的分支也开始遍布于全球,CIFS服务在广域网上开
始变得不能适应。CIFS服务交互繁多,且经常性的请求重复数据及命令,导致
在相对时延很大的广域网上变得效率低下,通常传输一个文件速度非常慢,在
线打开文件等操作更是让用户难以忍受。
传统的CIFS优化方法是在客户端和服务器分别部署1台广域网优化设备,
采用应用层的CIFS代理,通过缓存重复数据、降低CIFS在广域网上的交互次
数、预取数据等手段来提升CIFS在广域网的性能。然而,如前所述,传统的
CIFS优化方法需要在客户端和服务器两端分别进行部署,从而提高了网络复杂
度,且增加了部署的费用。
发明内容
基于此,有必要提供一种能降低部署复杂度的CIFS应用优化方法。
一种CIFS应用优化方法,包括:
获取数据读取请求;
在缓存中获取与所述数据读取请求对应的数据;
判断获取对应的数据是否成功,若是,则返回所述获取到的数据;否则转
发所述数据读取请求至服务器,获取服务器返回的数据,并返回所述服务器返
回的数据。
在其中一个实施例中,所述获取服务器返回的数据的步骤之后还包括:
将所述服务器返回的数据存储在所述缓存中。
在其中一个实施例中,所述方法还包括:
向所述服务器发送预读请求;
获取所述服务器根据预读请求返回的数据;
将所述服务器根据预读请求返回的数据存储在缓存中。
在其中一个实施例中,所述在缓存中获取与所述数据读取请求对应的数据
的步骤为:
在所述缓存中存储的所述服务器根据预读请求返回的数据中查找与所述数
据读取请求对应的数据。
在其中一个实施例中,所述方法还包括:
获取控制指令;
根据所述控制指令返回指令接收响应,并将所述控制指令转发给所述服务
器。
此外,还有必要提供一种部署简单的CIFS应用优化装置。
一种CIFS应用优化装置,包括:
请求获取模块,用于获取数据读取请求;
数据获取模块,用于在缓存中获取与所述数据读取请求对应的数据;
数据返回模块,用于判断获取对应的数据是否成功,若是,则返回所述获
取到的数据;否则转发所述数据读取请求至服务器,获取服务器返回的数据,
并返回所述服务器返回的数据。
在其中一个实施例中,所述数据返回模块还用于将所述服务器返回的数据
存储在所述缓存中。
在其中一个实施例中,还包括数据预读模块,用于向所述服务器发送预读
请求,获取所述服务器根据预读请求返回的数据,将所述服务器根据预读请求
返回的数据存储在缓存中。
在其中一个实施例中,所述数据获取模块还用于在所述缓存中存储的所述
服务器根据预读请求返回的数据中查找与所述数据读取请求对应的数据。
在其中一个实施例中,还包括指令响应模块,用于获取控制指令,根据所
述控制指令返回指令接收响应,并将所述控制指令转发给所述服务器。
上述CIFS应用优化方法和装置,在接收的数据读取请求在缓存中命中时返
回对应的数据,在接收的数据读取请求在缓存中未命中时再去服务器抓取数据
并返回,使得实现该功能的装置在部署时,可部署在客户端或服务器的一端,
从而降低了部署后的网络复杂度,减少了部署费用。
附图说明
图1为一个实施例中CIFS应用优化方法的流程图;
图2为一个实施例中CIFS应用优化装置的结构示意图;
图3为另一个实施例中CIFS应用优化装置的结构示意图;
图4为一个实施例中CIFS应用优化过程的时序图;
图5为另一个实施例中CIFS应用优化过程的时序图。
具体实施方式
在一个实施例中,如图1所示,一种CIFS应用优化方法,包括:
步骤S102,获取数据读取请求。
数据读取请求为客户端发送给服务器的读取数据的请求。在CIFS服务中,
服务器为提供文件共享服务的设备,客户端可通过数据读取请求获取服务器提
供的共享文件。
例如,当用户希望浏览共享文件夹时,可在客户端通过点击共享文件夹的
图标来打开显示窗口。客户端可自动发送数据读取请求,该数据读取请求中可
定义要求读取的数据为该共享文件夹下的所有共享文件的文件名及其目录结
构。
当用户希望打开并编辑某个共享文档时,客户端发起的数据读取请求可定
义要求读取的数据为该共享文档。
步骤S104,在缓存中获取与数据读取请求对应的数据。
缓存中的数据为预先从服务器中获取的数据。
在一个实施例中,CIFS应用优化方法还包括预读的步骤:
向服务器发送预读请求,获取服务器根据预读请求返回的数据,将服务器
根据预读请求返回的数据存储在缓存中。
在本实施例中,在缓存中获取与数据读取请求对应的数据的步骤可具体为:
在缓存中存储的服务器根据预读请求返回的数据中查找与数据读取请求对
应的数据。
服务器根据预读请求返回的数据可以是共享文件的目录结构信息、热点文
件、图片文件的缩略图等。
在一个实施例中,服务器可记录共享文件的读取次数,并根据共享文件的
读取次数筛选出热点文件,即读取次数大于阈值的共享文件。在预读请求中定
义的要求读取的数据为热点文件时,返回热点文件。
共享文件的目录结构信息、热点文件、图片文件的缩略图均为常用的信息,
将其存储在缓存中可避免反复由服务器获取而引起不必要的带宽资源消耗。
在一个实施例中,数据读取请求中可包括文件名称,可通过文件名称在缓
存中获取与数据读取请求对应的数据。在另一个实施例中,数据读取请求中可
包括所要读取数据的哈希值,可通过哈希值在缓存中获取与数据读取请求对应
的数据。
步骤S106,判断获取对应的数据是否成功,若是,则执行步骤S108:返回
获取到的数据;否则,执行步骤110:转发数据读取请求至服务器,获取服务器
返回的数据,并返回服务器返回的数据。
若获取到对应的数据,表示该数据读取请求在缓存中命中,则将缓存中已
存储的与数据访问请求对应的数据返回给发起该数据读取请求的客户端;若获
取失败,意味着该数据读取请求在缓存中未命中,则需要重新到服务器抓取数
据,并将重新抓取的数据返回给发起该数据访问请求的客户端。
在一个实施例中,获取服务器返回的数据的步骤之后,还可将服务器返回
的数据存储在缓存中。
将服务器返回的数据存储在缓存中后,当客户端再次请求读取该数据时,
可直接在缓存中获取,而不用向服务器抓取,从而提高了数据读取请求的命中
率。
在一个实施例中,还可以统计缓存中的数据各自的命中次数,并定期将缓
存中命中次数小于阈值的数据清除。
单位时间内命中次数较低的数据为不常用的数据,定期将其清理出缓存可
节省缓存空间,使的缓存中存储的数据均为常用的数据,从而提高了缓存的空
间利用率。
在一个实施例中,CIFS应用优化方法还包括:获取控制指令,根据控制指
令返回指令接收响应,并将控制指令转发给服务器。
在本实施例中,获取控制指令后,可自动返回指令接收响应,该指令接收
响应为数据传输协议中定义的服务器接收到该控制指令后必然会返回指令接收
响应。
例如,若当用户在客户端关闭一个共享文件夹的显示窗口时,客户端会向
服务器发送通知服务器其断开连接的控制指令,当获取到该控制指令后,可直
接返回指令接收响应通知客户端断开连接,并将此控制指令转发给服务器,在
接收到服务器返回的指令接收响应的数据包时,可将其丢弃,不做任何处理。
由于控制指令用于通知服务器在客户端上的即将发生的操作行为,因此直
接返回指令接收响应可跳过远程传输的过程,从而提高了客户端上的控制指令
的执行速度。
在一个实施例中,如图2所示,一种CIFS应用优化装置,包括请求获取模
块102、数据获取模块104、数据返回模块106,其中:
请求获取模块102,用于获取数据读取请求。
数据读取请求为客户端发送给服务器的读取数据的请求。在CIFS服务中,
服务器为提供文件共享服务的设备,客户端可通过数据读取请求获取服务器提
供的共享文件。
例如,当用户希望浏览共享文件夹时,可在客户端通过点击共享文件夹的
图标来打开显示窗口。客户端可自动发送数据读取请求,该数据读取请求中可
定义要求读取的数据为该共享文件夹下的所有共享文件的文件名及其目录结
构。
当用户希望打开并编辑某个共享文档时,客户端发起的数据读取请求可定
义要求读取的数据为该共享文档。
数据获取模块104,用于在缓存中获取与数据读取请求对应的数据。
缓存中的数据为预先从服务器中获取的数据。
在一个实施例中,如图3所示,CIFS应用优化装置还包括数据预读模块108,
用于向服务器发送预读请求,获取服务器根据预读请求返回的数据,将服务器
根据预读请求返回的数据存储在缓存中。
在本实施例中,数据获取模块104还用于在缓存中存储的服务器根据预读
请求返回的数据中查找与数据读取请求对应的数据。
服务器根据预读请求返回的数据可以是共享文件的目录结构信息、热点文
件、图片文件的缩略图等。
在一个实施例中,服务器可记录共享文件的读取次数,并根据共享文件的
读取次数筛选出热点文件,即读取次数大于阈值的共享文件。在预读请求中定
义的要求读取的数据为热点文件时,返回热点文件。
共享文件的目录结构信息、热点文件、图片文件的缩略图均为常用的信息,
将其存储在缓存中可避免反复由服务器获取而引起不必要的带宽资源消耗。
在一个实施例中,数据读取请求中可包括文件名称,数据获取模块104可
用于通过文件名称在缓存中获取与数据读取请求对应的数据。在另一个实施例
中,数据读取请求中可包括所要读取数据的哈希值,数据获取模块104可用于
通过哈希值在缓存中获取与数据读取请求对应的数据。
数据返回模块106,用于判断获取对应的数据是否成功,若是,则返回获取
到的数据;否则,转发数据读取请求至服务器,获取服务器返回的数据,并返
回服务器返回的数据。
若获取到对应的数据,表示该数据读取请求在缓存中命中,则将缓存中已
存储的与数据访问请求对应的数据返回给发起该数据读取请求的客户端;若获
取失败,意味着该数据读取请求在缓存中未命中,则需要重新到服务器抓取数
据,并将重新抓取的数据返回给发起该数据访问请求的客户端。
在一个实施例中,数据返回模块106还可用于将服务器返回的数据存储在
缓存中。
将服务器返回的数据存储在缓存中后,当客户端再次请求读取该数据时,
数据返回模块106可直接在缓存中获取,而不用向服务器抓取,从而提高了数
据读取请求的命中率。
在一个实施例中,还可以统计缓存中的数据各自的命中次数,并定期将缓
存中命中次数小于阈值的数据清除。
单位时间内命中次数较低的数据为不常用的数据,定期将其清理出缓存可
节省缓存空间,使的缓存中存储的数据均为常用的数据,从而提高了缓存的空
间利用率。
在一个实施例中,如图4所示,CIFS应用优化装置预先向服务器发起数据
读取请求A,服务器返回与数据读取请求A对应的数据A并缓存。当CIFS应
用优化装置接收到客户端发起的数据读取请求A时,该请求A在缓存中命中,
CIFS应用优化装置返回数据A。
当CIFS应用优化装置第一次接收到客户端发起的数据读取请求B时,该请
求B在缓存中未命中,CIFS应用优化装置向服务器转发数据读取请求B获取数
据B,并在返回数据B后将数据B缓存。
当CIFS应用优化装置第二次接收到客户端发起的数据读取请求B时,该请
求B在缓存中命中,CIFS应用优化装置返回数据B。
在一个实施例中,如图3所示,CIFS应用优化装置还包括指令响应模块110,
用于获取控制指令,根据控制指令返回指令接收响应,并将控制指令转发给服
务器。
在本实施例中,指令响应模块110获取控制指令后,可自动返回指令接收
响应,该指令接收响应为数据传输协议中定义的服务器接收到该控制指令后必
然会返回指令接收响应。
在一个实施例中,如图5所示,CIFS应用优化装置接收到控制指令后,
CIFS应用优化装置自动根据控制指令生成指令接收响应,并返回客户端,且向
服务器转发该控制指令。在接收到服务器返回的指令接收响应的数据包时,丢
弃该数据包。
例如,若当用户在客户端关闭一个共享文件夹的显示窗口时,客户端会向
服务器发送通知服务器其断开连接的控制指令,当获取到该控制指令后,指令
响应模块110可用于直接返回指令接收响应通知客户端断开连接,并将此控制
指令转发给服务器,在接收到服务器返回的指令接收响应的数据包时,可将其
丢弃,不做任何处理。
由于控制指令用于通知服务器在客户端上的即将发生的操作行为,因此直
接返回指令接收响应可跳过远程传输的过程,从而提高了客户端上的控制指令
的执行速度。
在一个实施例中,上述CIFS应用优化装置可部署在客户端内。在另一个实
施例中,上述CIFS应用优化装置可部署在多个客户端组成的子网的网关处,其
请求获取模块用于获取子网内的客户端发起的数据读取请求。
上述CIFS应用优化方法和装置,在接收的数据读取请求在缓存中命中时返
回对应的数据,在接收的数据读取请求在缓存中未命中时再去服务器抓取数据
并返回,使得实现该功能的装置在部署时,可部署在客户端或服务器的一端,
从而降低了部署后的网络复杂度,减少了部署费用。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,
但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域
的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和
改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附
权利要求为准。