Ускорьте 20-секундный вход в OpenID через RPXNow - PullRequest
6 голосов
/ 22 декабря 2010

Я реализовал RPXNow для нескольких приложений в качестве отличной абстракции для OpenID и OAuth для включения входа в Google и Facebook. Моя единственная жалоба заключается в том, что регистрация занимает слишком много времени. После нажатия на кнопку «Войти» Google уходит 8-10 секунд на завершение всего процесса, и это с моего локального компьютера! Я только один раз запрашиваю https://rpxnow.com/api/v2/auth_info строку ответа от моего AccountController, которая включает в себя результат входа и профиль пользователя.

Поэтому я решил вместо этого реализовать DotNetOpenAuth. Используя Google в качестве моего провайдера, для входа в систему все равно требуется 7-9 секунд! Это не может быть мой уровень хранилища, поскольку вход в Forms происходит мгновенно. Следовательно, я должен приписать период ожидания лагу между моей системой, RPXNow и провайдером аутентификации. Та же самая задержка имеет место на моих основных и премиальных счетах RPXNow.

Вход в Google OpenID в StackOverflow всегда кажется мгновенным. Как я могу ускорить свои входы в OpenID? Я готов отказаться от RPXNow, если я смогу снизить скорость входа до 1-3 секунд.


Редактировать: ОК, поэтому я пошел и рассчитал, сколько времени фактически занимает мой запрос RPXNow, и это меньше двух секунд (1984 мс и 2100 мс с холодного старта), но весь процесс занимает 7-8 * секунд. Может быть, это перенаправление или окно входа Google. Мне нужно еще провести диагностику.

  • Теплый старт. Сценарии RPXNow, изображения и DNS были кэшированы.

Еще тестирование: Я тестирую это по ADSL-соединению на 384 кбит / с, что есть у большинства людей в SA. Вот временная разбивка для входа в систему с помощью Google:

Пробой при холодном запуске:

  1. Загрузка виджета RPXNow: 3,1 с
  2. Загрузить всплывающее окно: 5,9 с
  3. Нажмите на провайдера Google: пренебрегли
  4. Загрузить окно входа в Google: 4.1s
  5. Отправить Google данные: пренебрегли
  6. Ожидание перенаправления RPX: 7,7 с (вкл. 1,9 с время аутентификации)

Общее время регистрации, кроме ввод данных:

20,8 секунд .

Слишком долго.

Распределение при теплом старте:

  1. Загрузка виджета RPXNow: 2.2s
  2. Вход через Google: 6,5 с (вкл. 1,8 с время аутентификации)

Общее время входа, кроме ввод данных:

8,7 секунд.

Едва ли приемлем.

1 Ответ

0 голосов
/ 09 августа 2012

Если честно, нам нужно увидеть ваш код.Некоторые общие идеи производительности:

Кэшируйте, когда можете, либо в пользовательском сеансе, либо в HttpCache, если это переменная уровня приложения, которую вы постоянно пересчитываете.Избегайте записи файлов на диск.Честно говоря, звучит так, будто вы работаете с

  1. Серьезно неохлаждаемая задержка в сети
  2. Состояние ожидания занятости, когда что-то ожидает получения заблокированного ресурса
  3. Очень плохой алгоритм делает что-то плохое
  4. Записывает что-то на диск много

Мое лучшее предложение заключается в том, чтобы вы пошагово просматривали свой код и пытались проверить его локально.Подумайте об использовании секундомера в System.Diagnostic и войдите в систему, когда вы подозреваете, что код проблемы находится в.Выделите проблему.Похоже, ваша основная проблема с производительностью не имеет ничего общего с OAuth или RPX, на мой взгляд.

Чтобы увеличить время загрузки страницы, попробуйте запустить страницу через Google PageSpeed ​​Insights и убедитесь, что вы по возможности минимизируете JS и CSS,

...