You've picked the wrong forum but I'm sure a friendly mod will move the thread for you.
I don't see much difference between a serialized array and a non-serialized one. The first might make for a smaller file however it requires calls to serialize and unserialize for each request.
Why are you choosing to do result caching outside of the database. MySQL 4 has an in-built cache for this kind of thing. In your model how would you know when to not use the cache (short of querying the database again to see if anything had changed)?
Edit: having just read up about MySQL's cache it seems it is cleared when a modification is done on any of the tables used in the cache. So I suppose that the same could be employed in a roll-your-own system but I suspect it would be more beneficial performance wise to use the MySQL cache.