- MIDDLEWARE_CLASSES 的顺序
MIDDLEWARE_CLASSES 的顺序
如果使用缓存中间件,注意在MIDDLEWARE_CLASSES
设置中正确配置。 因为缓存中间件需要知道哪些头部信息由哪些缓存区来区分。 中间件总是尽可能得想Vary
响应头中添加信息。
UpdateCacheMiddleware
在相应阶段运行。因为中间件是以相反顺序运行的,所有列表顶部的中间件反而last在相应阶段的最后运行。 所有,你需要确保UpdateCacheMiddleware
排在任何可能往Vary头部添加信息的中间件之前
。 下面的中间件模块就是这样的:
添加
Cookie
的SessionMiddleware
添加
Accept-Encoding
的GZipMiddleware
添加
Accept-Language
的LocaleMiddleware
另一方面,FetchFromCacheMiddleware
在请求阶段运行,这时中间件循序执行,所以列表顶端的项目会首先执行。 FetchFromCacheMiddleware
也需要在会修改Vary
头部的中间件之后运行,所以FetchFromCacheMiddleware
必须放在它们后面。