我注意到我的 Django 应用程序有时会进行两次数据库查询,而不是一次。日志文件显示两个类似的请求(几乎)同时发生。
例子:
[pid: 749|app: 0|req: 892/2837] x.x.x.x () {44 vars in 896 bytes} [Fri Sep 9 12:00:55 2016] GET /clinic_profile/61 => generated 0 bytes in 1 msecs (HTTP/1.1 301) 3 headers in 134 bytes (1 switches on core 0)
[pid: 750|app: 0|req: 659/2838] x.x.x.x () {44 vars in 898 bytes} [Fri Sep 9 12:00:55 2016] GET /clinic_profile/61/ => generated 84989 bytes in 374 msecs (HTTP/1.1 200) 3 headers in 102 bytes (1 switches on core 0)
这是我的系统的一个严重缺陷,我需要尽快修复它。
问题:我如何过滤重复请求?
我使用 Django、Nginx 和 Ubuntu 14.04
答案1
它看起来不像是双重数据库查询,而是从到/clinic_profile/61
的301 重定向/clinic_profile/61/
(它添加了尾随斜杠)
答案2
对于读取流量,在数据库前面使用缓存可以防止数据库执行重复查询。Django 有一个缓存框架: