Как сделать мою домашнюю страницу очень быстрой? - PullRequest
0 голосов
/ 01 октября 2011

Это работает, и я хочу сделать это очень быстро.Индексная страница очень статична и не меняется в течение нескольких дней, если только дата не обновляется или карта не обновляется.Так что должна быть возможность оптимизировать до очень быстрого, так как он мало что меняет.Я недавно мигрировал в 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 ]

2 голосов
/ 01 октября 2011

Я не знаю python, но если он не меняется в течение нескольких дней, я уверен, что вы могли бы написать что-нибудь, чтобы преобразовать вышеперечисленное в HTML (скажем, каждый час), а затем просто использовать версию HTML.Это даст вам одну из самых больших возможных оптимизаций, поскольку ваша домашняя страница не должна обрабатываться обработчиком сценариев вообще.

1 голос
/ 02 октября 2011

Обычно я бы рекомендовал инвертировать страницу, вывести index.html в виде статического файла, а также файлы css и js, а затем сделать AJAX-запрос на сервер для заполнения динамических битов.Статические файлы загружаются очень быстро.

Возможно, вы все равно сможете это осуществить, используя клиентский JavaScript, чтобы выяснить, какой логотип и что использовать, но получение формы загрузки файла будет медленнее., поскольку create_upload_url должно происходить на стороне сервера.

...