Если вы используете запрос HEAD, он отправит заголовки для ресурса, там вы можете проверить заголовки элемента управления кэшем, которые сообщат вам, был ли изменен ресурс, время последнего изменения, размер (длина содержимого) и дата.
$ telnet www.google.com 80
Trying 216.239.59.103...
Connected to www.l.google.com.
Escape character is '^]'.
HEAD /intl/en_ALL/images/logo.gif HTTP/1.0
HTTP/1.0 200 OK
Content-Type: image/gif
Last-Modified: Wed, 07 Jun 2006 19:38:24 GMT
Expires: Sun, 17 Jan 2038 19:14:07 GMT
Cache-Control: public
Date: Tue, 16 Sep 2008 09:45:42 GMT
Server: gws
Content-Length: 8558
Connection: Close
Connection closed by foreign host.
Обратите внимание, что вам, вероятно, придется украсить этот простой и простой подход множеством эвристик в зависимости от сумасшествия администратора каждого веб-сервера, поскольку каждый может отправлять любые заголовки, которые им нравятся. Если они не предоставляют заголовки для кэширования (Last-Modified, Expires, Cache-Control), ни Content-Length, ни etag, вам придется перезагружать его для проверки.