text: Title: Cache Control: Conditional Request and 304 Response Support
  Body: A previous [PR](https://github.com/sanic-org/sanic/pull/2447) provides `cache-control` HTTP header to `file` function in Sanic, but the best practice is to also implement the etag and the file validator.
  
  **Correct me if I am wrong:**
  With cache control value of `no-cache`, a validation is required every time before the client using the cached value. As my observation, validation request is usually a conditional request (requests that contain an [If-None-Match](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/If-None-Match) or an [If-Modified-Since](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/If-Modified-Since) header) to the resource URL. If the cached content is validated and the HTTP method is GET or HEAD, a [304 Not Modified response](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/304) can be sent to the client, which is faster and smaller because it doesn't have to contain the file in the body. Validation is checking the conditions in a conditional request.
  
  I think Sanic already supports 304 response in static file. I am wondering if we can do the same for `file` response in a general route handler.
  
  