For GET and HEAD requests the response should automatically generate an E-Tag when no Cache-Control header and no user-defined E-Tag header is set by applying an md5 on the response body.
In case the GET or HEAD request contains an If-None-Match header and it equals the E-Tag (generated or set by user) the response should automatically change to 304 Not Modified.
For details see http://tools.ietf.org/html/rfc7232.