如何用C实现代理服务器缓存加速?

dabaoxiaoshi 2012-12-10 11:09:35
http代理的实现采用下面的代码:
SOCKET sockListen = socket(AF_INET, SOCK_STREAM, 0);
//定义地址簇
SOCKADDR_IN localaddr;
localaddr.sin_family = AF_INET;
localaddr.sin_port = htons(20000);
localaddr.sin_addr.S_un.S_addr =INADDR_ANY;
//绑定地址
int err = bind(sockListen, (SOCKADDR *)&localaddr, sizeof(localaddr));
listen(sockListen, 100);
SOCKADDR_IN cltaddr;
SOCKET sockConn = accept(sockListen, (SOCKADDR*)&cltaddr, &cltaddrlen);
recv(sockConn, requbuf, MAX_REQUEST_LEN, 0); //接收客户端请求的数据
puts(requbuf);
接收用户的数据,然后将其转发给Web服务器,Web服务器接收到请求后将数据发给代理服务器,代理服务器将其转发给用户。Web服务器发给代理服务器的数据是应用层的http数据包。

我想问这具体的代理缓存加速是不是将该http数据包备份,然后用户如果请求的http包内容相同,直接将该备份的包转发给用户就行了?还是有其它的实现方法?有没有可以借鉴的C代码?

另:我知道Squid可以实现缓存加速,但是源代码真的没找到哪部分是用于加速的,而且Squid的加速功能很复杂,我只是想做个简单的缓存加速。
...全文
87 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
leon_罗 2013-10-30
  • 打赏
  • 举报
回复
你哪里 转发的时候有没有10053错误 能告诉我一下 你是怎么解决的吗 我的基本功能已经实现了 只是 转发的时候转发不完全
leon_罗 2013-10-30
  • 打赏
  • 举报
回复
呵呵 我也在做
Fikker 是一款面向广大站长的专业级网站加速服务器软件,跨平台,全界面化管理,利用页面缓存技术(webcache),网站管理员或开发人员通过 Fikker 管理平台将指定的页面缓存起来,其他用户在访问相同页面时候,就不需要网站读取数据库后再生成页面了,Fikker 直接返回用户需要的页面,响应速度成倍提升;另外 Fikker 通过 gzip 将页面(html,asp,php,css,js)压缩起来,减少了传输尺寸,提高传输效率和减少带宽占用。 Fikker缓存加速服务器设计与实现,包含了详细的网络设计,缓存技术设计,容错处理,gzip 设计,防盗链设计,主机管理设计,转向设计等。采用 C 语言实现。 目录: 1. 系统说明 2. 全非阻塞(non-block)网络设计 2.1. 全非阻塞设计说明 2.2. 网络负载均衡设计说明 2.3. 图例说明 3. 缓存设计 3.1. 缓存说明 3.2. 智能缓存设计 3.3. 强制缓存设计 3.3.1. 公共缓存 3.3.2. 会员缓存 3.3.3. 游客缓存 3.3.4. 会员缓存设计背景 3.3.5. 图例说明 3.4. 拒绝缓存设计 3.5. 清理缓存设计 3.6. 缓存优先级设计 3.7. 页面匹配规则设计 3.8. 缓存页面淘汰算法设计 3.8.1. 缓存页面淘汰说明 3.8.2. 缓存页面淘汰优先级 3.8.3. 同一优先级时淘汰规则 3.9. 页面压缩gzip设计 3.9.1. 说明 3.9.2. HTTP头中有关gzip压缩的字段 3.9.3. 页面压缩的实现 4. URL转向设计 4.1. URL转向简介 4.2. 转向逻辑 4.3. 简单举例 5. 防盗链设计 5.1. 防盗链说明 6. 黑名单设计 6.1. 黑名单说明 7. 代理设计 7.1. 代理介绍 7.2. 负载均衡策略 7.3. 负载均衡图例 8. 流量统计设计 8.1. 流量统计说明 8.2. 总量统计 8.3. 分量统计 Fikker 设计与实现V3 home:http://www.fikker.com 3 9. 实时监控设计 9.1. 实时监控说明 10. Windows 和Linux 兼容性设计 10.1.绿色安装包 10.2.Fikker 的运行权限 10.3.配置文件兼容性 11. 关于Fikker限制的说明 11.1.内存限制 11.2.连接数限制 11.3.HTTP 头尺寸限制 11.4.缓存页面尺寸限制 11.5.操作系统限制 12. Fikker 与HTTP 头 13. 关于Fikker返回错误页面的说明 13.1. 400 Bad Request 13.2. 403 Forbidden 13.3. 409 Conflict 13.4. 502 Bad Gateway 13.5. 503 Service Temporarily Unavailable

24,923

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Apache
社区管理员
  • Apache
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧