我正在使用Django manage.py runserver
来开发我的应用程序(显然),但是需要 10秒才能完全加载页面,因为开发服务器的服务非常非常慢静态媒体。
有没有办法加快速度或采取某种解决方法?我正在使用Windows 7。
答案 0 :(得分:7)
请考虑使用mod_wsgi
,并让httpd处理静态媒体。
答案 1 :(得分:5)
开发服务器是简单的不安全的单线程应用程序,所以你做不了多少。
你可以尝试的一个技巧是将/ site_media重定向到第二个开发服务器,但这很难看,可能没那么多。因此,您可以尝试将多个资产捆绑/压缩为一个css / js(例如,使用YUI Compressor)。
在任何情况下,您都应该拥有可以同时为多个资产提供服务的独立静态媒体服务器。
答案 2 :(得分:4)
安装Firefox(如果尚未安装),并安装Firebug Add-On。重启浏览器。在右下角单击“bug”图标,并确保在浏览器底部打开的Firebug面板的“网络”选项卡(下拉列表)中,网络监视器处于活动状态。
现在打开Firebug的网络选项卡,打开您观察到的慢慢加载的Django生成的页面。看一下时间线吧。您会注意到每个条形图的彩色片段表示每个请求的总“加载”时间的原因。例如,Violet意味着浏览器实际上正在等待服务器生成响应。格雷意味着它正在接收内容。等等。将鼠标悬停在条形图上将显示颜色图例。
使用Firebug的网络监视器,您应该能够确定您的浏览器和/或服务器在10秒内的准确程度。
答案 3 :(得分:2)
运行lighttpd以提供静态内容,并使用MEDIA_URL将页面指向服务于静态内容的lighttpd服务器。
答案 4 :(得分:0)
使用NGINX提供静态和媒体文件时,快速轻松的资源。这是怎么回事。但是,您需要根据您的用例和系统调整一些路径。但我认为这会让你开始:
1)为您的系统下载NGINX,在您的情况下Windows: http://nginx.org/
2)解压缩zip文件。以下是您的NGINX配置文件的外观。此文件位于nginx/conf/
:
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
# root path to your project
# use "..." if spaces are in the path
# you may add a drive letter if required, e.g. root c:/foo
# use / instead of \. It's simpler and works
root /example/path/django/project/;
server {
# any free port number will do; Django dev server usually runs on port 80
listen 8000 default;
server_name localhost; # or 127.0.0.1
}
}
3)通过调用nginx.exe
启动NGINX - 无需任何选项。
4)调整你的Djnago项目的settings.py
文件:
if DEBUG:
STATIC_URL = 'http://localhost:8000/static/'
# against Django recommendation, I often still use the static
# directory for user uploads; old-style Django ;-)
MEDIA_URL = 'http://localhost:8000/static/uploads/'
现在,Django中的静态URL应如下所示: http://localhost:8000/static/js/base.js
... 5)通过调用:
停止服务器taskkill /f /IM nginx.exe
嗯,就是这样。我很快打了这个,所以请告诉我是否有什么不清楚或不适合你。我可以相应地改进这个答案。
答案 5 :(得分:0)
您可以尝试使用带有org.apache.log4j.Logger
选项的django-extensions runserver_plus
命令来代替Django的--threaded
命令。在后台,它使用Werkzeug作为线程化的WSGI服务器。您可能会注意到静态文件加载时间的巨大改进。