Disclamer: I coded this based on another fork of some pal, and it was 12 months ago.
What it caches:
_entries already stores the past known entries that exists on the bucket. When hacking, I perceived myself repeating the task of checking the entries cache, than I DRYed it. DRY makes it safer for not letting me do mistakes.
When it saves requests:
Its pre-existing code, with no changes on me: _entries is checked when e.g. .exists() is called. If some name is tryed with .exists() and then .read(), It does 2 requests. If it caches the known entries, and I pre-populate it with all the bucket entries, than It saved-me 1 request per first read per file.
Maybe the pull-request got a bad name, but I cannot imagine a better one now. Perhaps: "DRYed the use of cached known _entries"
Seriously, I started to got confused before this refactor. I needed it to think about implementing other stuff.
This pull request is appreciated but the s3boto module has undergone a lot of changes which makes merging this on our side a bit difficult. If you could merge this pull request with the most recent code that would be helpful for getting this pull-request approved.