Use the If-Modified-Since header. An example follows.

Code:
; Type /upd to begin.
 
alias upd {
  set %upd.site    www.example.com
  set %upd.request /
  set %upd.file    example.html
  set %upd.header  1
  sockclose upd
  sockopen upd %upd.site 80
  _info Connecting to %upd.site
}
 
alias -l _info echo -sc info * upd: $1-
alias -l _cleanup {
  sockclose upd
  unset %upd.*
}
 
On *:sockopen:upd:{
  if $sockerr {
    _info Error: unable to connect.
    _cleanup
    return
  }
  _info Requesting file %upd.request
  sockwrite -tn $sockname GET %upd.request HTTP/1.1
  sockwrite -tn $sockname Host: %upd.site
  sockwrite -tn $sockname Connection: close
  if $isfile(%upd.file) {
    sockwrite -tn $sockname If-Modified-Since: $&
      $gmt($file(%upd.file).mtime)
  }
  sockwrite -tn $sockname 
}
 
On *:sockread:upd:{
  if %upd.header {
    var %var
    sockread %var
    tokenize 32 %var
    if HTTP/* iswm $1 {
      if     $2 == 200 { 
        ; OK
        _info Receiving data...
        .remove %upd.file
      }
      elseif $2 == 304 {
        ; Not Modified
        _info File not modified.
      }
      else {
        _info Error: unrecognized reply: $1-
        _cleanup
      }
    }
    elseif !$1 {
      ; A blank line ends the header section
      set %upd.header 0
    }
  }
  else {
    _info Writing to disk: %upd.file
    sockread &var
    bwrite %upd.file -1 &var
  }
}
 
On *:sockclose:upd:{
  _info Done.
  _cleanup
}