【问题标题】:Django Performance, url.py evaluation and cacheDjango 性能、url.py 评估和缓存
【发布时间】:2014-12-28 12:17:36
【问题描述】:

我已经用 django 开发了项目。现在面临一些优化问题。我创建/使用了大约 53 个小型应用程序。每个应用程序都有其本地 url.py 文件及其定义的 url。

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

现在每次用户点击任何 url 时,都会调用 Main 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

【问题讨论】:

    标签: python django python-2.7 optimization django-queryset


    【解决方案1】:

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

    前三个步骤是:

    1. Django 确定要使用的根 URLconf 模块。通常,这 是 ROOT_URLCONF 设置的值,但如果传入 HttpRequest 对象有一个名为 urlconf 的属性(由 中间件请求处理),它的值将被用来代替 ROOT_URLCONF 设置。

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

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

    出于您的目的,您需要在 2 和 3 之间编写自己的中间件,它首先在缓存中查找模式,如果找不到,则应继续执行第 3 步。

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

    【讨论】:

    • 由于我的网站是动态内容,内容是用登录用户过滤的。每个单独的应用程序也有它自己的 url.py(url 是动态的,但每次都相同,就像每个注册模型的 CRUD url),它们在主 url.py 中导入
    猜你喜欢
    • 1970-01-01
    • 2011-11-08
    • 2010-11-23
    • 2010-11-21
    • 1970-01-01
    • 2014-02-08
    • 2020-01-13
    • 1970-01-01
    相关资源
    最近更新 更多