Necko/Cache/Plans: Difference between revisions

From MozillaWiki
< Necko‎ | Cache
Jump to navigation Jump to search
Line 21: Line 21:
* All APIs should be async.
* All APIs should be async.
* A crash should not invalidate the entire cache.
* A crash should not invalidate the entire cache.
* Don't over-optimize on-disk storage, use one file per entry to let OS optimize.
* Support GZIP. Meta-data should say whether a file is gzip'd or not, can be turned on and off without causing corruption. Pass through files gzip'd from the network.
* Version API for the cache so we can update easily.
* Make use of fallocate.
* Restrictive XPCOM API, start with just "clear cache." Require a use case to add to the API.


== Performance Goals ==
== Performance Goals ==

Revision as of 16:17, 11 March 2013

New Cache Plans

People

We have decided to rewrite the HTTP disk cache.

Design team:

  • Michal Novotny
  • Taras Glek
  • Steve Workman?
  • Honza Bambas?
  • Jason Duell?
  • Brian Bondy

Implementation team:

  • Honza Bambas?
  • Steve Workman?

Design Requirements

  • All APIs should be async.
  • A crash should not invalidate the entire cache.
  • Don't over-optimize on-disk storage, use one file per entry to let OS optimize.
  • Support GZIP. Meta-data should say whether a file is gzip'd or not, can be turned on and off without causing corruption. Pass through files gzip'd from the network.
  • Version API for the cache so we can update easily.
  • Make use of fallocate.
  • Restrictive XPCOM API, start with just "clear cache." Require a use case to add to the API.

Performance Goals

  • Primary performance target is mobile - Android and Firefox OS. On-disk layout must optimize for this.
  • Make sure performance on spinning disks is good, but top performance here is not the priority.

API

API design goes here.

Locking

Locking plans go here. Clearly detail what locks the cache will have, and strategies to avoid lock contention in performance-critical situations.

On-Disk Layout

Clearly describe on-disk layout here.