2014-11-01 41 views
0

我用django开发了项目。现在面临的优化问题很少。我创建/使用了大约53个小应用程序。每个应用程序都有其本地url.py文件及其定义的URL。Django性能,url.py评估和缓存

现在有一个主项目url.py.这个url.py文件定义了URL并包含了每个应用程序本地的url.py。

现在,每当用户点击任何网址时,主url.py文件被调用,它自己调用每个url.py,然后返回用户点击的视图。

我的问题非常简单,我们如何强制urls.py一次加载并直接从缓存中提供url,而无需评估每个用户命中的每个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 

回答

1

这是Django是如何处理的HttpRequest https://docs.djangoproject.com/en/dev/topics/http/urls/#how-django-processes-a-request

第一3个步骤是:

  1. Django的确定根URL配置模块来使用。通常,此 是ROOT_URLCONF设置的值,但如果传入的 HttpRequest对象具有名为urlconf(由 中间件请求处理设置)的属性,则其值将用于取代ROOT_URLCONF设置中的 。

  2. Django加载Python模块并寻找变量 urlpatterns。这应该是django.conf.urls.url() 实例的Python列表。

  3. Django按顺序遍历每个URL模式,并停在 第一个匹配请求的URL。

你的目的,你需要写2和3首先会在缓存模式之间你自己的中间件,如果它亘古不变的发现,它应该继续步骤3

但我不认为你需要这个。我会去缓存视图比urls重得多。

+0

由于我的网站是动态内容,因此用logedin用户过滤内容。每个单独的应用程序都有它自己的url.py(url是动态的,但每次都像CRUD URL一样,每个注册模型都是相同的),它们被导入到主url.py – sharafjaffri 2014-11-01 19:23:13