我有一个全新安装的django 1.0,一个简单的页面需要5秒才能加载。在我同事的电脑上几乎没时间。
我使用
启动服务器python manage.py testserver
我可以看到每个GET请求(PNG和样式表)大约需要半秒钟。
另一个奇怪的事情,我认为是相关的,应用程序的功能测试在我的机器上使用MySQL运行得慢得多(比我同事的机器慢100倍)。当我将应用程序设置为使用sqlite时,它们运行得非常快。我想感叹sqlite并没有太多改变加载页面所需的时间,但它确实加速了服务器的启动。
看起来像IO问题,但除了django之外,我在机器上看不到一般的性能问题。
Django在python2.4上运行,我正在运行Vista。我还检查了python2.5。
谢谢ΤΖΩΤΖΙΟΥ,它必须完全是一个DNS问题,因为页面一旦加载就会很快加载 而不是http://localhost:8000/app我转到http://127.0.0.1:8000/app。
但它可能是由什么引起的?我的主机文件只有两个条目:
127.0.0.1 localhost ::1 localhost
答案 0 :(得分:18)
Firefox在某些Windows计算机上浏览到localhost时出现问题。您可以通过关闭ipv6来解决它,这不是真正推荐的。直接使用127.0.0.1是解决问题的另一种方法。
答案 1 :(得分:7)
这些帖子都没有帮助我。在我的具体案例中,Justin Carmony给了我答案。
<强>问题强>
我将[hostname] .local映射到我的/ etc / hosts文件中的127.0.0.1,以便于开发,dns请求需要5秒才能解决。有时他们会快速解决,有时他们不会。
<强>解决方案强>
Apple正在使用.local在更新的Snow Leopard版本(我认为我在更新到10.6.8之后开始注意到它)和Mac OS X Lion上做了一些极好的魔术。如果您将dev主机名更改为以local开头而不是以local结尾,则应该全部设置。此外,除了本地之外,您几乎可以使用任何TLD,它可以正常工作。
示例强>
test.local可以成为:
并且您的主机文件条目将显示为:
local.test.com 127.0.0.1
注意:此解决方案具有作为[hostname] .com子域的附加好处,可以更轻松地为Facebook API等指定应用程序域名。
更新/ etc / hosts后,可能还希望在终端中运行dscacheutil -flushcache
以获得良好的衡量标准
答案 2 :(得分:3)
由于您报告您的朋友的机器没有延迟,并且我认为您的和他的是可比较的计算机,它可能是DNS相关的问题。尝试将客户端和服务器的IP地址添加到服务器的hosts文件中。
如果你在* nix上运行Django,它就是/etc/hosts
文件。如果在MS Windows上运行它,那就是%WINDIR%\SYSTEM32\DRIVERS\ETC\HOSTS
文件。 (它们是文本文件,可以通过您喜欢的文本编辑器进行编辑。)
答案 3 :(得分:2)
我认为它是开发服务器,它没有针对速度和安全性进行优化。我注意到特殊服务的静态文件(即媒体)很慢。
答案 4 :(得分:2)
我过去遇到过同样的问题。可以通过从hosts文件中删除以下行来解决此问题。
::1 localhost
一旦它消失了,你应该能够快速再次使用localhost。
答案 5 :(得分:2)
也有同样的问题,我在Vista和Windows 7机器上用Firefox注意到了它。访问开发服务器127.0.0.1:8000解决了这个问题。
答案 6 :(得分:1)
如果所有其他方法都失败了,您可以随时cProfile申请并查看确切的瓶颈所在。
答案 7 :(得分:1)
我有同样的问题,但它是由mysqld引起的。
该应用程序使用wsgi和mysql服务器在同一主机上的生产速度非常快,但在使用django runserver选项和远程mysql服务器的开发环境中速度很慢。
我注意到使用“show processlist”表示数据库中的连接与用户“未经身份验证的用户”处于“登录”状态,这让我注意到身份验证过程中的问题。
寻找真正的问题,我终于注意到mysqld试图获取我的ip的dns名称并禁用名称dns解析,我解决了问题。
为此,您可以将此行添加到my.cnf文件中:
跳过名称解析
答案 8 :(得分:1)
升级到Django 1.3或更新版本。
如果您在2012年仍然遇到此问题(使用Chrome),请确保您正在升级。在1.3中,当开发服务器是单线程时,bug被修复与慢速相关。
升级解决了我的问题。我正在运行Django 1.2,因为这是Debian Squeeze的默认设置。
答案 9 :(得分:1)
我这样解决了这个问题:
转到setting.py
并设置
DEBUG = False
答案 10 :(得分:0)
禁用AV扫描&amp;看看是否有所作为。它也可能是由Vista造成的。升级到最新的Service Pack,然后重试。
答案 11 :(得分:0)
要完全绕过localhost而不更改主机文件或Firefox中的任何设置,您可以安装插件Redirector并制定规则以从localhost重定向到127.0.0.1。使用这些设置
Include pattern : http://localhost*
Redirect to : http://127.0.0.1$1
将其他字段留空。
答案 12 :(得分:0)
我遇到了同样的问题。
解决方案是:
所以我刚刚取消注释我的静态服务网址:/
答案 13 :(得分:0)
静态文件加载缓慢
如果您注意到静态文件和媒体文件(图像,样式表等)的加载特别慢,则问题可能出在Django的开发服务器(python manage.py runserver
)上。如hassen所述,该服务器未针对速度进行优化。
您可以尝试使用带有runserver_plus
选项的django-extensions --threaded
命令来代替Django的默认runserver命令。在后台,它使用Werkzeug作为线程化的WSGI服务器。您可能会注意到,静态文件的加载时间有了很大的改善。