我遇到了頁面加載速度的問題。優化Django
現在加載頁面大約需要7秒,Django處理需要2〜3秒。
顯而易見的一點是,我缺乏體系結構知識,在訪問頁面時執行平均50個查詢,如「Django調試工具欄」所示,但大多數查詢類似於「昨天的快照」 )「或」每日快照(按某事物分組)「,並且不必每次更新。
我想出了使用內存緩存的想法或爲可能的數據類型創建新表。
這種問題是否有任何約定或設計模式?
樣本查詢是這些(我相信他們不應該在昨天的數據或最後month`s數據每次查詢):
SELECT `sample_salestarget`.`id`, `sample_salestarget`.`country_id`, `sample_salestarget`.`year`, `sample_salestarget`.`month`, `sample_salestarget`.`sales` FROM `sample_salestarget` WHERE (`sample_salestarget`.`country_id` = "abc" AND `sample_salestarget`.`month` = 8 AND `sample_salestarget`.`year` = 2012)
SELECT `sample_dailysummary`.`id`, `sample_dailysummary`.`country_id`, `sample_dailysummary`.`date`, `sample_dailysummary`.`pv_day`, `sample_dailysummary`.`pv_week`, `sample_dailysummary`.`pv_month`, `sample_dailysummary`.`active_uu_day`, `sample_dailysummary`.`active_uu_week`, `sample_dailysummary`.`active_uu_month`, `sample_dailysummary`.`active_uu_7days`, `sample_dailysummary`.`active_uu_30days`, `sample_dailysummary`.`paid_uu_day`, `sample_dailysummary`.`paid_uu_week`, `sample_dailysummary`.`paid_uu_month`, `sample_dailysummary`.`sales_day`, `sample_dailysummary`.`sales_week`, `sample_dailysummary`.`sales_month`, `sample_dailysummary`.`register_uu_day`, `sample_dailysummary`.`register_uu_week`, `sample_dailysummary`.`register_uu_month`, `sample_dailysummary`.`pay_count_day`, `sample_dailysummary`.`pay_count_week`, `sample_dailysummary`.`pay_count_month`, `sample_dailysummary`.`total_user`, `sample_dailysummary`.`inv_access_uu`, `sample_dailysummary`.`inv_sender_uu`, `sample_dailysummary`.`inv_accepted_uu`, `sample_dailysummary`.`inv_send_count`, `sample_dailysummary`.`memo`, `sample_dailysummary`.`first_charge_uu` FROM `sample_dailysummary` WHERE `sample_dailysummary`.`date` = 2012-09-07 AND `sample_dailysummary`.`country_id` = "abc")
我假設你讓Django爲你做所有的查詢?因爲'group by'有時候會很慢,一般 –
給我們展示一些代碼 –
這是*無處*附近有足夠的信息來幫助你,但是我可以說你犯了無數錯誤。調試工具欄顯示的加載時間僅與其他視圖或同一視圖的其他迭代的上下文有關,* not *,並且我重複*與您的頁面的總體真實速度無關。調試工具欄減慢了處理過程並顯着提高了*。使用調試工具欄加載7秒鐘的頁面可能需要不到一秒的時間。 –