我使用Django manage.py runserver
來開發我的應用程序(很明顯),但它需要10秒才能完全加載頁面,因爲開發服務器的服務非常非常慢靜態媒體。使Django開發服務器在服務靜態媒體時更快
有什麼辦法可以加快它或某種解決方法?我正在使用Windows 7.
我使用Django manage.py runserver
來開發我的應用程序(很明顯),但它需要10秒才能完全加載頁面,因爲開發服務器的服務非常非常慢靜態媒體。使Django開發服務器在服務靜態媒體時更快
有什麼辦法可以加快它或某種解決方法?我正在使用Windows 7.
開發服務器是簡單的不安全的單線程應用程序,所以你不能做太多。
你可以嘗試的一個訣竅是將/ site_media重定向到第二個開發服務器,但這很醜陋,可能無濟於事。因此,您可以嘗試將多個資產捆綁/壓縮到一個css/js中(例如使用YUI Compressor)。
而且無論如何,你應該有獨立的靜態媒體服務器,可以一次提供多種資源。
安裝Firefox(如果您尚未安裝),並安裝Firebug Add-On。重新啓動您的瀏覽器。在右下角點擊「bug」圖標,並確保在瀏覽器底部打開的Firebug面板的「網絡」選項卡(它是下拉菜單)中,網絡監視器處於活動狀態。
現在打開Firebug的網絡選項卡,打開您觀察到緩慢加載的Django生成的頁面。看看時間線吧。您會注意到每個條的彩色碎片顯示每個請求的「加載」總時間的原因。例如,Violet意味着實際上瀏覽器正在等待服務器生成響應。灰色意味着它正在接收內容。等等。將鼠標懸停在條上將顯示一個顏色圖例。
使用Firebug的網絡監視器,您應該能夠確定您的瀏覽器和/或服務器花費10秒鐘的精確程度。
資源的實際下載不需要任何時間,但開發服務器顯然可以一次只處理一個請求,引起緩慢(?)。 – Veeti
「一次請求一次」 - 這是因爲它是單線程的,所以所有請求都在隊列中序列化。 –
運行lighttpd以提供靜態內容,並使用MEDIA_URL將頁面指向服務器靜態內容的lighttpd服務器。
使用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通過調用nginx.exe
- 不需要的選項。
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
好吧,就是這樣。我很快輸入了這個信息,所以如果有什麼不清楚或者不適合你,請告訴我。我可以相應地改進這個答案。
你的頁面如何變大?你提交什麼尺寸的文件?你的靜態媒體在哪裏?你通過'http://127.0.0.1:8000'在一臺計算機上運行,對吧?如果是這樣,它應該運行得非常快。你是否通過Django視圖函數提供靜態內容?如果是這樣,那是一個錯誤。 –
一個頁面的總重量約爲53千字節,不會再有 - 但包含許多樣式表,圖像和JavaScript文件。我正在使用Django附帶的靜態媒體視圖進行開發。 – Veeti