There are still a large number of topics regarding server-initiated caching that we have not yet had time to explore in depth. These include server conflicts, and push-cache server management. We are especially interested in a more efficient mechanism for resource discovery so that clients do not have to query the original server to locate documents. There is no reason why an unavailable primary host should limit access to a file that is cached in a nearby push-cache server; this is one problem we look forward to solving.
Another area that we have not yet explored completely is the relationship between push-caching and client-caching. It has been argued that client-caches are most effective when caching lots of small, popular objects. Larger objects not only take up a disproportionate share of precious cache space, but latency for accessing large objects is often less important than for accessing smaller objects. We have already seen that push-caching is more efficient than client-caching at taking advantage of cache space; push-caching may be ideally suited to handling the distribution and replication of larger objects, leaving client caches to specialize in smaller ones. This is also an area that we are very excited about pursuing.
Finally, we plan to build a push-caching Web server, as well as a push-cache aware Web proxy. With these two tools we will explore the use of server-initiated caching in the real world, to measure its true effectiveness at reducing server load and network bandwidth. There are a number of servers and proxies with publicly available source code that would serve as suitable foundations for such work.
We also plan to build graphical tools that will allow system administrators to monitor the status of their push-caching web server visually. These tools will display the current location of object replicas against geographical maps, and will graphically illustrate push-cache dispersion.