Available at: http://digitalcommons.calpoly.edu/theses/1002
Date of Award
MS in Computer Science
Website scaling has been an issue since the inception of the web. The demand for user generated content and personalized web pages requires the use of a database for a storage engine. Unfortunately, scaling the database to handle large amounts of traffic is still a problem many companies face. One such company is iFixit, a provider of free, publicly-editable, online repair manuals. Like many websites, iFixit uses Memcached to decrease database load and improve response time. However, the caching strategy used is a very ad hoc one and therefore can be greatly improved.
Most research regarding web application caching focuses on cache invalidation, the process of keeping cached content consistent with the permanent data store. Generational caching is a technique that involves including the object’s last modified date in the cache key. This ensures that cache keys change when- ever the object is modified, which effectively invalidates all relevant cache entries. Fine-grained caching is now very simple because the developer doesn’t need to explicitly delete all possible cache keys that might need to be invalidated when an object is modified. This is particularly useful for caching arbitrary fragments of HTML without increasing the complexity of cache invalidation.
In this work, we describe the process of implementing a caching strategy based on generational caching concepts in iFixit’s website. Our implementation yielded a 20% improvement in page response time by caching fragments of HTML and results of database queries.