2015-08-17 36 views
16

我正在用django構建一個應用程序,它將顯示頂級投票項目的地圖。在django上使用葉片的最佳實踐

我不是一個有經驗的網站開發,我想知道在哪裏,何時何地應該建立他們的地圖。 (這條線的例子 - >)

map_osm.create_map(path='osm.html') 

現在我把我的views.py,它的每一次構建地圖的用戶查看,問題是 - 是不是很創建開銷太大計算服務器?

我想過如果每x個投票都要更新它,或者保留一個模型來管理它。

這種情況下的最佳做法是什麼?

回答

8

阿米特。至於用戶的葉片和建築圖,是的,當許多用戶想要計算時,它可以爲服務器做出努力。 它有解決方案:

  1. 緩存與Redis的或Memcached的(Django的有電池的話)。此時,如果座標相同,則可以將緩存生存期設置爲幾秒到幾個小時。 Django提供視圖緩存,模板緩存或其他。
  2. 保存映射到db的結果,所以如果用戶像昨天一樣計算相同的coodrinates - Django將從db中獲取結果並向模板顯示得更快。
  3. 如果沒有通過您的要求 - 只要讓django更快,關閉未使用的中間件,使用gunicorn \ uwsgi來運行和部署。定位到Web服務器更多RAM和CPU核心(部署時)。
  4. 您可以嘗試分析您的項目,以便您可以找到項目中計算最多的部分。當你發現 - 讓它更快。
0

緩存是最好的選擇,但由於您不是經驗豐富的開發人員,我會爲您提供替代解決方案。

看來您每次用戶訪問您網站的那一部分時都會重新計算地圖。一種解決方案是直接鏈接到html文件,並通過CRON任務或Python計時器每30分鐘(或任何您需要的)更新文件。這樣,您只會爲所有用戶每半小時計算一次。