2013-09-30 141 views
1

我在Python,Django框架中創建了Web應用程序。 Web應用程序從MongoDB數據庫獲取數據,它從MongoDB數據庫獲取大約10000個文檔,工作速度非常慢。現在正在尋找加快我的網絡應用的方法。那麼,是否可以將方法render_to_response的結果作爲HTML臨時存儲在服務器上?它看起來像這樣: 我有一個HTML表單;當上的形式的用戶類型的數據和點擊提交按鈕,網絡應用程序執行從蒙戈數據庫中獲取數據的圖,併發送經由可變mongo_data數據home.html:存儲在該是否可以將django的render_to_response模板保存到服務器?

return render_to_response('home.html', {'mongo_data': mongo_data, 'request': request}, 
          context_instance=RequestContext(request)) 

home.html顯示數據在變量mongo_data。在Web應用程序中,我有很多相同的查詢,對於相同的查詢,我得到的結果相同,結果爲home.html。因此,我想在服務器上存儲home.html到文件夾例如temp,並且當用戶在HTML表單中鍵入數據並單擊提交按鈕時,首先檢查是否home.html他的數據位於temp文件夾中;如果是,則加載home.html,如果不是,則去查看哪個將生成具有特定mongo_data的新的home.html。 如果這是可能的,它會加快我的web應用程序很多..

回答

5

Django緩存框架完全是爲了這個目的;見https://docs.djangoproject.com/en/dev/topics/cache/

在你的情況,你要麼緩存一段時間整個視圖:

@cache_page(60 * 15) 
def my_mongo_view(request): 
    return render_to_response('home.html', ...) 

(從https://docs.djangoproject.com/en/dev/topics/cache/#the-per-view-cache

或使用低層緩存API(https://docs.djangoproject.com/en/dev/topics/cache/#the-low-level-cache-api):

from django.core.cache import cache 

def my_mongo_view(request): 
    ret = cache.get('home-rendered') 
    if ret is None: 
     ret = render_to_response('home.html', ...) 
     cache.set('home-rendered', ret) 
    return ret 

如果您只是閱讀文檔,您會發現更多用於緩存的選項(例如,在您的模板中)。

P.S.您還可以通過變量或用戶標識或其他參數來設置緩存參數。

相關問題