使用全站点缓存的Django应用程序始终将Last-Modified标头设置为

时间:2014-05-04 19:45:46

标签: python django caching nginx

我正在尝试在新服务器(nginx)上运行我的Django应用程序。我已经配置了Django的文件系统缓存(参见下面的配置)。这是我为我的网址获取的完整标题集:

HTTP/1.1 200 OK
Server: nginx/1.1.19
Date: Sun, 04 May 2014 19:40:56 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 14408
Connection: keep-alive
Content-Encoding: gzip
Expires: Thu, 15 May 2014 05:39:17 GMT
Vary: Cookie, Accept-Encoding
Last-Modified: Sun, 04 May 2014 19:39:17 GMT
Cache-Control: max-age=900000
Set-Cookie: csrftoken=qZJziTgGHyJEhSZ03xKwazR43tqodubE; expires=Sun,
    03-May-2015 19:39:17 GMT; Max-Age=31449600; Path=/
P3P: CP="ALL DSP COR PSAa PSDa OUR NOR ONL UNI COM NAV"

正如您所见,Last Modified字段位于请求的Date之前不到一分钟。这似乎是一致的:每次重新加载页面时,它都会将此字段设置为当前时间(或之前)。这意味着我的90000秒超时(10天)似乎总是相对于当前日期。

这个Django缓存配置中的任何内容看起来都很奇怪吗?

CACHES = {
    'default': {
       'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
       'LOCATION': '/var/www/mydir/CACHE',
       'TIMEOUT': 900000
    }
}

# without this it defaults to 600, despite above setting
CACHE_MIDDLEWARE_SECONDS = 900000 

这些是我的中间件类:

MIDDLEWARE_CLASSES = (
    'middleware.SmartUpdateCacheMiddleware',
    'django.middleware.gzip.GZipMiddleware',
    'django.middleware.cache.UpdateCacheMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.cache.FetchFromCacheMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware'
)

(我正在使用SmartUpdateCacheMiddleware修复缓存中的Cookie问题)

这是否有任何原因发生,或者这实际上是预期的行为?

0 个答案:

没有答案