Aside from cache-related pragma's and standard content-expiration, you may wish to check out the 'ETag' HTTP header, which seems to be favoured by Internet Explorer for this kind of thing.
Using ETag, you uniquely idenify each 'version' of a resource, so if you want it to refresh, you send a different ID.
I find it better than appending ?12309821 to a request because:
my logs arent filled with random numbers
12309821 adds nothing to the document, semantically speaking.
the ETag header is generally left unmolested by internet proxies.