2
edits
(Created page with '__NOTOC__ This is one of three real applications from Summer of Code 2009 which we thought were good enough to put up as examples. Having said that, none of them are perfect, so ...') |
m (To make the references and citatation right (I am the author)) |
||
| Line 22: | Line 22: | ||
====Principles==== | ====Principles==== | ||
Dynamic resources are often employed by modern web sites, espcially dynamic web pages. They are hard to cache because even a minor change to the content will result in a cache miss. HTTP delta encoding [ | Dynamic resources are often employed by modern web sites, espcially dynamic web pages. They are hard to cache because even a minor change to the content will result in a cache miss. HTTP delta encoding [6] could alleviate this problem. Instead of sending the entire resource, a web server in could send the difference (delta) between the new version and the old version of the resource to the client (could be a browser or a proxy). If the size of the delta is smaller than the resource, which happens when two versions resemble each other a lot, we'll benefit from this scheme. | ||
To compute the delta, the server could maintain older versions of resources, and the client then includes extra information specifying the resource version in its request. An alternative is to use encoding algorithms such as rsync [3] and crcsync [6]. Roughly speaking, they all partition the data into chunks and compute the checksums of chunks. A client sends a request with the checksums. The delta is computed by the server based on the resource in hand and these checksums, and is then transferred to the client. Finally, the client is able to compute the up-to-date content of the resource according to its local old copy of resource and the received delta. | To compute the delta, the server could maintain older versions of resources, and the client then includes extra information specifying the resource version in its request. An alternative is to use encoding algorithms such as rsync [3] and crcsync [6]. Roughly speaking, they all partition the data into chunks and compute the checksums of chunks. A client sends a request with the checksums. The delta is computed by the server based on the resource in hand and these checksums, and is then transferred to the client. Finally, the client is able to compute the up-to-date content of the resource according to its local old copy of resource and the received delta. | ||
| Line 113: | Line 113: | ||
[4] R. Fielding et al. RFC 2616 - Hypertext Transfer Protocol -- HTTP/1.1. http://tools.ietf.org/html/rfc2616.<br> | [4] R. Fielding et al. RFC 2616 - Hypertext Transfer Protocol -- HTTP/1.1. http://tools.ietf.org/html/rfc2616.<br> | ||
[5] Antony Rowstron and Peter Druschel. Pastry: Scalable, Decentralized Object Location, and Routing for Large-scale Peer-to-Peer Systems. In Middleware '01: Proceedings of the IFIP/ACM International Conference on Distributed Systems Platforms Heidelberg, pp 329-350, 2001.<br> | [5] Antony Rowstron and Peter Druschel. Pastry: Scalable, Decentralized Object Location, and Routing for Large-scale Peer-to-Peer Systems. In Middleware '01: Proceedings of the IFIP/ACM International Conference on Distributed Systems Platforms Heidelberg, pp 329-350, 2001.<br> | ||
[ | [6] What is HTTP Delta Encoding? http://www.webreference.com/internet/software/servers/http/deltaencoding/intro/.<br> | ||
[6] crcsync. http://ccan.ozlabs.org/repo/?cmd=inventory;path=ccan/crcsync.<br> | [6] crcsync. http://ccan.ozlabs.org/repo/?cmd=inventory;path=ccan/crcsync.<br> | ||
[7] J. Mogul et al. RFC 3229 - Delta encoding in HTTP (proposed standard). http://tools.ietf.org/html/rfc3229.<br> | [7] J. Mogul et al. RFC 3229 - Delta encoding in HTTP (proposed standard). http://tools.ietf.org/html/rfc3229.<br> | ||
[8] The ModifyHeaders extension. http://modifyheaders.mozdev.org/.<br> | [8] The ModifyHeaders extension. http://modifyheaders.mozdev.org/.<br> | ||
[9] The CacheViewer extension. https://addons.mozilla.org/en-US/firefox/addon/2489/.<br> | [9] The CacheViewer extension. https://addons.mozilla.org/en-US/firefox/addon/2489/.<br> | ||
edits