如何让我的主页快速?

时间:2011-10-01 10:40:04

标签: python google-app-engine caching memcached gzip

它有效,我想让它超级快。 index page非常静态,除非日期更新或地图更新,否则几天内不会发生变化。所以应该可以非常快速地进行优化,因为它没有太大变化。我最近迁移到HRD,我的URI是montaoproject.appspot.com我重写了这个,所以它只是python和django / html(没有数据层旅行。)Memcache?其他选择?减少javascript?我首先确保没有触及数据层:

def get(self):
    logo = ''
    if get_host().find('.br') > 0:
        cookie_django_language = 'pt-br'
        logo = 'montao'
    elif get_host().find('allt') > 0 and not self.request.get('hl'):
        logo = ''
        cookie_django_language = 'sv'
    elif get_host().find('gralumo') > 0 \
        and not self.request.get('hl'):
        cookie_django_language = 'es_AR'  # learn
    else:
        logo = ''
        cookie_django_language = self.request.get('hl', '')  # edit
    if cookie_django_language:
        if cookie_django_language == 'unset':
            del self.request.COOKIES['django_language']
        else:
            self.request.COOKIES['django_language'] = \
                cookie_django_language
        translation.activate(cookie_django_language)
    loginmsg = ''
    user = users.get_current_user()
    twittername = None
    client = OAuthClient('twitter', self)
    if client.get_cookie():
        info = client.get('/account/verify_credentials')
        twittername = info['screen_name']

    # seconds_valid = 8600
    # self.response.headers['Cache-Control'] = "public, max-age=%d" % seconds_valid

    if logo == 'montao':
        self.render(
            u'montao',
            host=get_host(),
            twittername=twittername,
            continue_url=get_host(),
            loginmsg=loginmsg,
            form_url=blobstore.create_upload_url('/fileupload'),
            user_url=(api.users.create_logout_url(self.request.uri) if api.users.get_current_user() else api.users.create_login_url(self.request.uri)),
            admin=users.is_current_user_admin(),
            user=(users.get_current_user() if users.get_current_user() else ''
                  ),
            logo=logo,
            )
    else:
        self.render(
            u'home',
            host=get_host(),
            twittername=twittername,
            continue_url=get_host(),
            loginmsg=loginmsg,
            form_url=blobstore.create_upload_url('/fileupload'),
            latest=Ad.all().filter('published =',
                    True).order('-modified').get(),
            user_url=(api.users.create_logout_url(self.request.uri) if api.users.get_current_user() else api.users.create_login_url(self.request.uri)),
            admin=users.is_current_user_admin(),
            guser=(users.get_current_user() if users.get_current_user() else ''
                   ),
            logo=logo,
            )

2 个答案:

答案 0 :(得分:2)

我不知道python,但如果它几天没有改变,我相信你可以写一些东西将上面的内容转换为HTML(比如每小时),然后只提供HTML版本。这将为您提供最大的优化之一,因为您的主页根本不必由脚本引擎处理。

答案 1 :(得分:1)

通常,我建议反转页面,将index.html作为静态文件,以及css和js文件,然后向服务器发出AJAX请求以填充动态位。静态文件加载速度非常快。

您可能仍然可以通过使用客户端JavaScript来确定要使用哪个徽标等来解决这个问题,但是由于create_upload_url需要,因此渲染文件上传表单会变慢发生在服务器端。