Loading django/middleware/cache.py +1 −1 Original line number Diff line number Diff line Loading @@ -93,7 +93,7 @@ class UpdateCacheMiddleware(object): if not self._should_update_cache(request, response): # We don't need to update the cache, just return. return response if not response.status_code == 200: if response.streaming or 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 Loading tests/regressiontests/cache/tests.py +9 −12 Original line number Diff line number Diff line Loading @@ -1424,24 +1424,21 @@ class CacheI18nTest(TestCase): CACHE_MIDDLEWARE_SECONDS=60, USE_ETAGS=True, ) def test_middleware_with_streaming_response(self): # cache with non empty request.GET request = self._get_request_cache(query_string='foo=baz&other=true') # first access, cache must return None def test_middleware_doesnt_cache_streaming_response(self): request = self._get_request() get_cache_data = FetchFromCacheMiddleware().process_request(request) self.assertEqual(get_cache_data, None) self.assertIsNone(get_cache_data) # pass streaming response through UpdateCacheMiddleware. content = 'Check for cache with QUERY_STRING and streaming content' # This test passes on Python < 3.3 even without the corresponding code # in UpdateCacheMiddleware, because pickling a StreamingHttpResponse # fails (http://bugs.python.org/issue14288). LocMemCache silently # swallows the exception and doesn't store the response in cache. content = ['Check for cache with streaming content.'] response = StreamingHttpResponse(content) UpdateCacheMiddleware().process_response(request, response) # second access, cache must still return None, because we can't cache # streaming response. get_cache_data = FetchFromCacheMiddleware().process_request(request) self.assertEqual(get_cache_data, None) self.assertIsNone(get_cache_data) @override_settings( CACHES={ Loading Loading
django/middleware/cache.py +1 −1 Original line number Diff line number Diff line Loading @@ -93,7 +93,7 @@ class UpdateCacheMiddleware(object): if not self._should_update_cache(request, response): # We don't need to update the cache, just return. return response if not response.status_code == 200: if response.streaming or 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 Loading
tests/regressiontests/cache/tests.py +9 −12 Original line number Diff line number Diff line Loading @@ -1424,24 +1424,21 @@ class CacheI18nTest(TestCase): CACHE_MIDDLEWARE_SECONDS=60, USE_ETAGS=True, ) def test_middleware_with_streaming_response(self): # cache with non empty request.GET request = self._get_request_cache(query_string='foo=baz&other=true') # first access, cache must return None def test_middleware_doesnt_cache_streaming_response(self): request = self._get_request() get_cache_data = FetchFromCacheMiddleware().process_request(request) self.assertEqual(get_cache_data, None) self.assertIsNone(get_cache_data) # pass streaming response through UpdateCacheMiddleware. content = 'Check for cache with QUERY_STRING and streaming content' # This test passes on Python < 3.3 even without the corresponding code # in UpdateCacheMiddleware, because pickling a StreamingHttpResponse # fails (http://bugs.python.org/issue14288). LocMemCache silently # swallows the exception and doesn't store the response in cache. content = ['Check for cache with streaming content.'] response = StreamingHttpResponse(content) UpdateCacheMiddleware().process_response(request, response) # second access, cache must still return None, because we can't cache # streaming response. get_cache_data = FetchFromCacheMiddleware().process_request(request) self.assertEqual(get_cache_data, None) self.assertIsNone(get_cache_data) @override_settings( CACHES={ Loading