     :synopsis: Middleware handling advanced HTTP features.
  
  .. class:: ConditionalGetMiddleware
  
  Handles conditional GET operations. If the response has a ``ETag`` or
  ``Last-Modified`` header, and the request has ``If-None-Match`` or
  ``If-Modified-Since``, the response is replaced by an
  :class:`~django.http.HttpResponseNotModified`.
  
  Also sets the ``Date`` and ``Content-Length`` response-headers.
 
</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 or you can rely on the :class:`~django.middleware.common.CommonMiddleware`
 </s> add or you can rely on the :class:`~django.middleware.http.ConditionalGetMiddleware`
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
     :synopsis: Middleware handling advanced HTTP features.
  
  .. class:: ConditionalGetMiddleware
  
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
  ``Last-Modified`` header, and the request has ``If-None-Match`` or
  ``If-Modified-Since``, the response is replaced by an
  :class:`~django.http.HttpResponseNotModified`.
  
  Also sets the ``Date`` and ``Content-Length`` response-headers.
keep keep keep keep replace keep keep keep keep keep
 Fixed #26447 -- Deprecated settings.USE_ETAGS in favor of ConditionalGetMiddleware. 
docs/ref/middleware.txt