我用django开发了项目。现在面临优化问题。我创建/使用了大约53个小应用程序。每个应用程序都有其本地url.py文件及其定义的URL。
现在有一个主项目url.py.这个url.py文件定义url并包含每个应用程序本地url.py。
现在每当用户点击任何网址时,都会调用主url.py文件,该文件本身会调用每个url.py中的每一个,然后返回视图供用户点击。
我的问题非常简单,我们如何强制urls.py立即加载并直接从缓存中提供网址而不评估每个用户点击的每个url.py?
Test configurations:
Django 1.5
python 2.7
Server django test server "runserver"
Deployment Configuration:
Django 1.5
python 2.7
Server apache22 with modwisgi
答案 0 :(得分:1)
这就是django处理HttpRequest https://docs.djangoproject.com/en/dev/topics/http/urls/#how-django-processes-a-request
的方式前三个步骤是:
Django确定要使用的根URLconf模块。通常,这个 是ROOT_URLCONF设置的值,但是如果传入 HttpRequest对象有一个名为urlconf的属性(由...设置) 中间件请求处理),其值将用于代替 ROOT_URLCONF设置。
Django加载Python模块并查找变量 urlpatterns的。这应该是django.conf.urls.url()的Python列表 实例
- 醇>
Django按顺序遍历每个URL模式,然后停在 第一个匹配请求的URL。
为了您的目的,您需要在2到3之间编写自己的中间件,首先在缓存中查找模式,如果找不到,则应继续执行步骤3.
但我认为你不需要这个。我会去缓存比网址更重的视图。