如何用C实现代理服务器缓存加速?
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的加速功能很复杂,我只是想做个简单的缓存加速。