mysql can cache some results, however i doubt it would be terribly effective in caching binary data as the data still has to be sent out to php.
given a choice i'd prefer to have my system and application files loaded in file system cache and my images in apache's cache where i can control how much memory they use.
yeah, i might be over estimating mysql optimizations, but i keep on seeing references to pages in the manual:
"Add an option to periodically flush key pages for tables with delayed keys if they haven't been used in a while."
"The FLUSH TABLE is needed to ensure that the all active index pages is written to disk before you start the backup"
"If the index pages are not sorted, sort them."
and look at this page for why space is left on pages (general info):
http://www.mysql.com/doc/I/n/InnoDB_physical_structure.html