docs: def process_response(self, request, response):
          """Sets the cache, if needed."""
          if not hasattr(request, '_cache_update_cache') or not request._cache_update_cache:
              # We don't need to update the cache, just return.
              return response
          if request.method != 'GET':
              # This is a stronger requirement than above. It is needed
              # because of interactions between this middleware and the
              # HTTPMiddleware, which throws the body of a HEAD-request
              # away before this middleware gets a chance to cache it.
              return response
          if not response.status_code == 200:
              return response
          # Try to get the timeout from the "max-age" section of the "Cache-
          # Control" header before reverting to using the default cache_timeout
          # length.
          timeout = get_max_age(response)
          if timeout == None:
              timeout = self.cache_timeout
          elif timeout == 0:
              # max-age was set to 0, don't bother caching.
              return response
          patch_response_headers(response, timeout)
          if timeout:
              cache_key = learn_cache_key(request, response, timeout, self.key_prefix)
              cache.set(cache_key, response, timeout)
              logging.debug("UpdateCacheMiddleware: setting %s -> %s params are: %s" % (cache_key, request.path, get_cache_key_parameters(request)))
          return response