扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
由于Linux的开放性,极大激发了程序员的创造力,使得以Linux为作业平台的新技术不断出现。Server Push(推技术)就是其中一例。它可在完全不增加成本的基础上,使网站达到最佳的性能。本文将对其进行详细介绍。
一、环境配置
为了在Linux下更充分领略Server Push的功能,在运行环境上,我们需进行一些选择。
1.WWW服务器
首先要在Linux上安装Apache,以便能自由编译功能模块,这样可以充分使用Server Push、FastCGI、EPerl和PHP等新的扩展功能。
2.脚本支持
笔者推荐用Perl或C语言来写CGI脚本,因为Perl已经是CGI脚本程序事实上的标准。而且在Perl 5中已经可以直接调用 C子程序而不需要任何声明。不管你用什么语言来写CGI脚本,解释器中应该有CGI.PM模块,笔者试用的版本是 5.004,这一模块的更新版大家可以从网上下载。
二、程序实例及函数剖析
好了,有了上面的工具,下面我们就来写一个Server Push程序来说明它的实现过程:
|
程序第二行告诉CGI解释程序来调用支持Server Push 的功能模块(CGI.PM),在这个模块中预先定义了三个函数:multipart—init()、multipart—start()和multipart—end,只要在程序中有use CGI qw/:push -nph/声明,就可以直接使用这三个函数。
multipart—init()函数的作用是声明一个文档类型,就像普通的CGI程序中的“Content-Type: text/html”声明,告诉服务器下面传送的是HTML文档,而multipart—init()这一函数声明的文件类型却是实现Server Push最根本的方法类型:
|
如果你对HTTP的MIME类型有详细的了解,你就知道multipart 类型是一种复合类型,它的子类型是mixed,子类型的X参数,大家可以参看详细的MIME类型说明,这里最关键的是replace方法,它不停地用新接收的数据更新旧的数据,这就是 Server Push最大的技术内涵。boundary只是一个边界值,告诉浏览器从这儿开始,使用Server Push方法了。其实你完全可以这样理解,只要在脚本程序中声明了如multipart/x-mixed-replace 这样一个文档类型,服务器就和客户机建立了一个特别的连接。服务器就不断地把客户机请求的数据源源不断地推向了客户机。而传统的 Client PULL方法则是:
1.Client 和Server建立连接;
2.Client发送请求到Server;
3.Server响应请求;
4.Server 断开连接以响应下一请求。
通过这两种方法的比较,大家可以看出Server Push优点主要在于服务器和客户机之间这种不间断的连接方式,使它不需要采用Client PULL的〈META http-equiv=refresh content=″n″〉这种方法来刷新页面,不仅更新速度快,而且不会产生闪动效果。
如果你不用multipart—init()而直接在脚本程序中用以下语句也可以达到同样目的:print ″Content-Type: multipart/x-mixed-replace; boundary=′boundary′\n\n″。当系统不支持multipart—init()函数时,就可以直接这样声明。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者