          cache_timeout = settings.CACHE_MIDDLEWARE_SECONDS
      if cache_timeout < 0:
          cache_timeout = 0  # Can't have max-age negative
      if settings.USE_ETAGS and not response.has_header('ETag'):
          if hasattr(response, 'render') and callable(response.render):
              response.add_post_render_callback(set_response_etag)
          else:
              response = set_response_etag(response)
      if not response.has_header('Expires'):
          response['Expires'] = http_date(time.time() + cache_timeout)
 
</s> remove     If-Modified-Since, the response is replaced by an HttpNotModified.
 </s> add     If-Modified-Since, the response is replaced by an HttpNotModified. An ETag
    header is added if needed. </s> remove Handles conditional GET operations. If the response has a ``ETag`` or
 </s> add Handles conditional GET operations. If the response doesn't have an ``ETag``
header, the middleware adds one if needed. If the response has a ``ETag`` or
        warnings.warn(
            "The USE_ETAGS setting is deprecated in favor of "
            "ConditionalGetMiddleware which sets the ETag regardless of the "
            "setting. patch_response_headers() won't do ETag processing in "
            "Django 2.1.",
            RemovedInDjango21Warning
        )
          cache_timeout = settings.CACHE_MIDDLEWARE_SECONDS
      if cache_timeout < 0:
          cache_timeout = 0  # Can't have max-age negative
      if settings.USE_ETAGS and not response.has_header('ETag'):
        warnings.warn(
            "The USE_ETAGS setting is deprecated in favor of "
            "ConditionalGetMiddleware which sets the ETag regardless of the "
            "setting. patch_response_headers() won't do ETag processing in "
            "Django 2.1.",
            RemovedInDjango21Warning
        )
          if hasattr(response, 'render') and callable(response.render):
              response.add_post_render_callback(set_response_etag)
          else:
              response = set_response_etag(response)
      if not response.has_header('Expires'):
          response['Expires'] = http_date(time.time() + cache_timeout)
keep keep keep add keep keep keep keep keep keep
 Fixed #26447 -- Deprecated settings.USE_ETAGS in favor of ConditionalGetMiddleware. 
django/utils/cache.py