Как Twitter отображает мой профиль мгновенно? - PullRequest
5 голосов
/ 22 февраля 2012

Контекст

Я понял, что в Twitter страница профиля отображается по-разному в зависимости от того, как она называется:

  1. При нажатии на ссылку профиля в меню загружаются DOM и последние твиты, и страница отображается через ~ 4 секунды. Каждый раз.
  2. Используя сочетание клавиш GP (или ссылку слева), страница отображается мгновенно.

Подробнее

  • Я заметил, что профиль должен был недавно отображаться для GP мгновенно отображает страницу.
  • При закрытии и открытии браузера профиль должен отображаться снова, чтобы GP мгновенно отображал страницу.

Исследование

Сначала я подумал, что Twitter может использовать переменную сеанса на стороне сервера для хранения данных. Затем я обнаружил использование localStorage в исходном коде Twitter. Признаюсь, хранилище DOM мне незнакомо, а код JavaScript в Twitter не читается. Поэтому я не уверен, что они используют localStorage для хранения профиля.

Вопрос

Любая гипотеза, информация или ссылки о хранилище Twitter DOM / хранилище сеансов?

1 Ответ

5 голосов
/ 22 февраля 2012

Это интересный вопрос, поэтому я зашел в твиттер и провел собственное расследование.

Нажав на имя моего профиля, ссылка сделана с помощью AJAX.Я вижу, как загружается мой график.Но страница уже загружена заранее, поэтому моя информация также уже загружена.

Нажав на ссылку слева или с помощью GP вы просто отображаете уже загруженную страницу (скрытый или в объекте JavaScript, поэтому в памяти).Он будет просто отображать ваш профиль уже загружен, и AJAX скачать канал (JSON).

URL изменится с https://twitter.com/#!/ на https://twitter.com/#!/wraldpyk (в моем случае).

Когда вы щелкаете по своему профилю в меню (вверху справа), вы переходите к https://twitter.com/wraldpyk. Это снова откроет страницу и загрузит все.Обратите внимание, что вы будете перенаправлены на https://twitter.com/#!/wraldpyk, и в то же время ваша временная шкала также будет загружена (откройте FireBug и посмотрите, как загружаются изображения и каналы)

Насколько я могу судить, локального хранилища нет (кроме JavaScript,как и все) сделано.Все данные постоянно загружаются при загрузке новой страницы.

То же самое происходит, когда вы вводите gh в своем профиле.(А также со всеми другими ярлыками)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...