简单的缓存代理HTTP服务器

http, 演示客户与服务器套接字。 http只支持GET操作及硬编码的MIME类型的一小部分(MIME类型是多媒体内容的类型描述符)。代理HTTP服务器是单线程的,该线程中每一个请求依次被处理,其他请求等待。http作为一个代理服务器时,它还拷贝每一个它获取的文件到本地缓存中。对于本地缓存,它没有用于刷新和无用单元回收的策略。

HTTP服务器是通过5个类和一个接口实现的。更完善的实现方案可能在主类http外分裂很多方法,以使组成结构更抽象。

MimeHeader.java

MIME是通过电子邮件系统传达多媒体内容的一个Internet标准。HTTP协议运用并扩展了MIME标头的概念,在HTTP客户和服务器之间传输常规的属性/值对。 P410

该类是Hashtable的一个子类,能方便的存储和检索与MIME标头有关的关键字/值对。

parse方法用来获取一个原始MIME格式的字符串,并使它的关键字/值对进入一个给定的MimeHeader实例。它用StringTokenizer把输入数据分解成独立的有CRLF(\r\n)序列标记的行。

class MimeHeader extends Hashtable{
void parse(String data) {
     StringTokenizer st = new StringTokenizer(data,"\r\n");
     while(st.hasMoreTokens()){
     String s  = st.nextToken();
     int colon = s.indexOf(‘:‘);
     String key = s.substring(0,colon);
     String val = s.substring(colon + 2);
     put (key,val);
}}

}

HTTPResponse.java

HTTPResponse类是所有与HTTP服务器应答有关的事物的包装程序。它被http类的代理部分使用。当你向一个HTTP服务器发送一个请求时,它以一个存储在statusCode中的整数形式的代码以及一个存储在reasonPhrase中的文本应答(这些变量名在正式的HTTP规范中规定)。这个单行的响应后面跟随着一个包含进一步应答信息的MIME头。我们用MimeHeader对象来解析这个字符串。

UrlCacheEntry.java

为在服务器上保存文档的内容,必须在用于找回文档的URL和文档自身描述之间建立联系。一个文档由它的MimeHeader和原始数据描述。例如一副图像可以被一个Content-Type:image/gif样式的MimeHeader描述,而原始图像数据就是一个字节数组。

UrlCacheEntry对象的构造函数需要用URL作为关键字以及一个与之相关的MimeHeader。如果MimeHeader内部有一个名为Content-Length成员,数据区域被预先分配足够大的空间来保存它的内容。

append() 用来给UrlCacheEntry对象增添数据的。它不是一个简单的setData()方法,原因是数据可能流经网络且需要在一定时间被存储成块。append方法处理三种情形:1.数据缓冲区根本没有分配; 2.数据缓冲区对于引入的数据来说太小,所以它被重新分配; 3.引入的数据正好可以插入缓冲区。 在任何时候,length成员变量保存数据缓冲区当前的有效大小值。

时间: 2024-10-14 10:09:26

简单的缓存代理HTTP服务器的相关文章

对jquery的ajax进行二次封装以及ajax缓存代理组件:AjaxCache

虽然jquery的较新的api已经很好用了, 但是在实际工作还是有做二次封装的必要,好处有:1,二次封装后的API更加简洁,更符合个人的使用习惯:2,可以对ajax操作做一些统一处理,比如追加随机数或其它参数.同时在工作中,我们还会发现,有一些ajax请求的数据,对实时性要求不高,即使我们把第一次请求到的这些数据缓存起来,然后当相同请求再次发起时直接拿之前缓存的数据返回也不会对相关功能有影响,通过这种手工的缓存控制,减少了ajax请求,多多少少也能帮助我们提高网页的性能.本文介绍我自己关于这两方

Squid 缓存服务器的缓存代理,及配置 Squid 的ACL访问控制策略

Squid缓存服务器 Squid 是 Linux 系统中最常见的一块开源代理服务软件(官方网站为 http://www.squid-cache.org ),可以很好地实现HTTP.FTP.DNS.查询,以及SSL等应用的缓存代理,功能十分强大. 缓存代理概述 作为应用层的代理服务软件,Squid 主要提供缓存加速和应用层过滤控制的功能. 代理的工作机制 当客户机通过代理来请求 Web 页面时,指定的代理服务器辉县检查自己的缓存,如果缓存中已经有客户机需要访问的页面,则直接将缓存中的页面内容反馈给

Varnish缓存代理简介与配置

一.varnish原理: 1)Varnish简介: varnish缓存是web应用加速器,同时也作为http反向缓存代理.你可以安装varnish在任何http的前端,同时配置它缓存内容.与传统的 squid 相比,varnish 具有性能更高.速度更快.管理更加方便等诸多优点.有一部分企业已经在生产环境中使用其作为旧版本的squid的替代方案,以在相同的服务器成本下提供更好的缓存效果,Varnish更是作为CDN缓存服务器的可选服务之一. 根据官网的介绍,Varnish的主要特性如下:http

varnish 4.0 缓存代理配置

一.varnish原理: 1)Varnish简介: varnish缓存是web应用加速器,同时也作为http反向缓存代理.你可以安装varnish在任何http的前端,同时配置它缓存内容.与传统的 squid 相比,varnish 具有性能更高.速度更快.管理更加方便等诸多优点.有一部分企业已经在生产环境中使用其作为旧版本的squid的替代方案,以在相同的服务器成本下提供更好的缓存效果,Varnish更是作为CDN缓存服务器的可选服务之一. 根据官网的介绍,Varnish的主要特性如下:http

varnish4.0缓存代理配置

防伪码:你必须非常努力,才能看起来毫不费力. 一.varnish原理: 1)Varnish简介: varnish缓存是web应用加速器,同时也作为http反向缓存代理.你可以安装varnish在任何http的前端,同时配置它缓存内容.与传统的 squid 相比,varnish 具有性能更高.速度更快.管理更加方便等诸多优点.有一部分企业已经在生产环境中使用其作为旧版本的squid的替代方案,以在相同的服务器成本下提供更好的缓存效果,Varnish更是作为CDN缓存服务器的可选服务之一. 根据官网

varnish缓存代理

1)Varnish简介: varnish缓存是web应用加速器,同时也作为http反向缓存代理.你可以安装varnish在任何http的前端,同时配置它缓存内容.与传统的 squid 相比,varnish具有性能更高.速度更快.管理更加方便等诸多优点.有一部分企业已经在生产环境中使用其作为旧版本的squid的替代方案,以在相同的服务器成本下提供更好的缓存效果,Varnish更是作为CDN缓存服务器的可选服务之一. 根据官网的介绍,Varnish的主要特性如下:https://www.varnis

Nginx多进程高并发、低时延、高可靠机制在缓存代理中的应用

1. 开发背景 现有开源缓存代理中间件有twemproxy.codis等,其中twemproxy为单进程单线程模型,只支持memcache单机版和redis单机版,都不支持集群版功能. 由于twemproxy无法利用多核特性,因此性能低下,短连接QPS大约为3W,长连接QPS大约为13W,同时某些场景时延抖动厉害. 为了适应公有云平台上业务方的高并发需求,因此决定借助于twemproxy来做二次开发,把nginx的高性能.高可靠.高并发机制引入到twemproxy中,通过master+多work

varnish缓存代理的安装

二.安装varnish 1.安装依赖关系的软件包(注:使用centos在线yum源) [[email protected] ~]# yum -y install autoconfautomake libedit-devel libtool ncurses-devel pcre-devel pkgconfigpython-docutils python-sphinx 2.安装varnish Varnish的官方网址为http://varnish-cache.org,可以在这里下载最新版本的软件.

使用Nginx反向代理和proxy_cache缓存搭建CDN服务器加快Web访问速度

碰到问题: 移动用户访问web服务器www.osyunwei.com很慢 解决办法: 1.在移动机房放置一台nginx反向代理服务器 2.通过域名DNS智能解析,所有移动用户访问www.osyunwei.com时解析到nginx反向代理服务器 3.nginx反向代理服务器与web服务器之间采用专线连接 系统运维  www.osyunwei.com  温馨提醒:qihang01原创内容©版权所有,转载请注明出处及原文链接 说明: 1.web服务器 线路:电信 IP:192.168.21.129 域