并行化主机名和Django的下载

时间:2011-05-11 20:35:57

标签: django django-templates

我想实现这一点,以加快我的图像的负荷。对于那些不了解这一点的人,请阅读here

Django能否以任何方式帮助我解决这个问题?我主要考虑如何自动化静态内容的URL创建。我遵循下一个模式:

<script src="{{STATIC_URL}}scripts/jquery.js" type="text/javascript"></script>

我首先想到将STATIC_URL依次设置为“http://cdnX.mydomain.com/”,其中X将是1到4之间的数字,但这会打破缓存,因为我没有保证例如,jquery将始终由cdn2提供。或者我错了吗?

任何想法?

2 个答案:

答案 0 :(得分:1)

您可能需要custom template tag来处理循环,并可能将信息存储在用户的会话中。您也可以使用缓存后端,但这取决于您。它可能看起来像这样:

LAST_CDN=4
cdn_format = "http://cdn%s.mydomain.com/%s"
@register.simple_tag(takes_context=True)
def cdn_url(context, url):
    request = context['request'] ## Assumes that request is in your context.
    current_cdn = request.session.get('current_cdn', 0)
    current_cdn += 1
    if current_cdn > LAST_CDN:
        current_cdn=1
    cdn_list = request.session.get('cdn_list', {})
    if cdn_list.get(url, None) is not None:
        return cdn_format % (cdn_list.get(url), url,)
    else:
        cdn_list[url] = current_cdn
        request.session['cdn_list'] = cdn_list
    return cdn_format % (current_cdn, url,)

答案 1 :(得分:0)

嗯,这有点显而易见,但是如果你总是可以通过设置STATIC_URL_1,STATIC_URL_2等来“分配”一个或另一个域的资源,然后手动选择一个用于模板中每个资源。< / p>