2013-06-13 39 views
3

我只是在一切的Django首發相關的,所以我敬請原諒我困惑的解釋。我一直試圖通過附加的電子商務模塊解決基於Django的網站上的一些頁面加載問題。Django的電子商務網站龐大的產品頁面初始加載時間(等待)

初始頁面加載時間是巨大的,約5秒,點之後,一切都/負載順利。

這個龐大的加載時間上都涉及到產品的所有頁面中發生(在我的情況下,單一產品頁面和購物車)。奇怪的是,列表沒有問題(分類頁面)。

我的下一個猜測是,加載時間是由一些產品相關的查詢造成的,所以我進一步搜索的代碼,我已經來到翻過其中包含了「product_view」定義的main.py文件。

的代碼是這樣的:

def product_view(request,shortcode,product_id,variation_id,stub): 
    product = get_object_or_404(Product.unmoderated.select_related(),pk=product_id) 
    variation = get_object_or_404(ProductVariation.objects.select_related(),pk=variation_id) 
    print variation.__dict__ 
    if not product.active: 
     c = {} 
     return render_to_response('main/product_inactive.html', c, context_instance=RequestContext(request)) 


    links = ['main_product_view','main_product_variation'+str(variation.id)] 

    c = {'links':links, 'product':product, 'variation':variation, 'categories':get_categories(), 'brands':get_brands(), 'title':product.name} 
    c.update(csrf(request)) 

    return render_to_response('main/product.html', c, 
          context_instance=RequestContext(request)) 


def product_view_json(request,shortcode,product_id,variation_id,stub): 
    try: 
     product = get_object_or_404(Product,pk=product_id) 
     variation = get_object_or_404(ProductVariation,pk=variation_id) 

     thumbnail = get_thumbnail(variation.image, '220x220', crop='center', quality=80) 

     d = {"title":product.name, "brand":product.merchant.name, "price":str(product.base_price+variation.price), "image":thumbnail.url} 

     out = json.dumps(d) 

     r = HttpResponse(out) 
     r['Access-Control-Allow-Origin'] = '*'; 

     return r 
    except: 
     return HttpResponse("Error") 

在這一點上我迷路了,不知道如果我解決這個問題,或者我應該做的還有在正確的道路上。

此外,也有一些圖像丟失,仍沒有撞傷者淘汰,但它不是在這一點上完全相關的。此外,啓用了memcache,靜態模板文件在所有頁面加載時間都不會受到影響(將模板分解爲純文本),並且爲Apache環境啓用了mod_pagespeed模塊。

我真的很感激有這方面的投入。謝謝!

+1

嘗試[Django的調試工具欄(https://github.com/django-debug-toolbar/django的-debug-toolbar)它會告訴你已經執行了多少個查詢以及每個查詢花了多少時間。然後你可以從那裏改進。 –

回答

0

我覺得product_view這些線是不正確

product = get_object_or_404(Product.unmoderated.select_related(),pk=product_id) 
variation = get_object_or_404(ProductVariation.objects.select_related(),pk=variation_id) 

將其更改爲

product = get_object_or_404(Product,pk=product_id) 
variation = get_object_or_404(ProductVariation,pk=variation_id) 

.select_related()將嘗試預取和加載所有對象及其相關對象,這將是資源消耗。

+0

感謝Rohan的回覆,但不幸的是這並未解決問題。 – Adrian

0

似乎更多的是HTML的問題,而不是Django的問題。考慮幾件事情

  • 如果您正在使用彈出窗口,然後加載時間增加,因爲他們是 加載的頁面加載。

  • 然後查看您是否正在遠程調用.js和.css文件,或者它們是否將 置於您的服務器上。所以如果他們是本地的,它會提高 響應。

就看看這些,讓我知道,如果有任何那些存在

+0

將仔細檢查這些,我會讓你知道。我現在回滾一些備份,只是爲了再次有一個乾淨的開始。 – Adrian

+0

同時檢查數據庫。它是放置在本地服務器還是遠程調用。 –

+0

@AdrianApan問題已得到解決,如果肯定,然後分享您的解決方案,如果某人的答案已經幫助,然後標記爲投票或正確答案。這將不勝感激。 –

相關問題