It's a combination of both. It is up to the proxy to determine that a page is past the Expires point, and thus when requested again, it needs to go out and retrieve it, but I could easily write a proxy that is blissfully ignorant of this aspect. On the other hand, there are web sites that use a non-standard method for attempting to expire web pages, and thus don't play well with proxies that do follow the standard.