Как работает сайт / Что происходит за кулисами - PullRequest
3 голосов
/ 05 июня 2011

Я пытаюсь понять, что происходит в фоновом режиме при использовании веб-сайта ИЛИ в основном то, что происходит, когда пользователь взаимодействует с браузером. Я понимаю, что это огромный список, который сильно зависит от архитектуры, действий пользователя и т. Д. Я просто пытаюсь почувствовать основные вещи и избавиться от недоразумений, а также использовать это, чтобы узнать больше о вещах, которые я не понимаю.

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

Пользователь вводит URL => браузер проверяет, доступно в кеше браузера => DNS посмотреть up [root dns lookup => recursive dns => get ip] => установить tcp соединение => отправить http req => get статическая страница с веб-сервера => если требуется аутентификация случается [либо читать куки из браузер или попросить пользователя ввести учетные данные] => как-то получает динамические элементы, а также [как? , здесь есть некоторая ленивая инициализация ?] => Тогда пользователь выполняет некоторые действие [щелкает ссылку или что-то еще] => проверьте кеш браузера => если не помогло [взять входные параметры и вставить в URL каким-то образом [может быть зашифровать некоторые вещи, если требуется] => ударяет балансировщик нагрузки => направлен на сервер приложений [в зависимости от того, как LB выбирает хост] => приложение проверяется кеш сервера [memcached или какое-то кеширование, не уверен, что это «обычно» происходит здесь или в некоторых другой уровень] => сервер приложений пытается понять запрос [если это служба прослушивания на каком-то порту, http порт 80 он получит URL и разбирать для выполнения некоторых операций] => база данных запрашивается при необходимости => снова может быть связь MGMT / кэширование / параллельные запросы и т. д. здесь => база данных возвращает результат серверу приложений => сервер приложений создает полезные данные и заголовки результатов [http] => отправляет его в браузер для рендеринга => Обновлен кеш браузера => пользователь реагирует на ответ.

Я не рассматривал повторные попытки / сбои и то, как они обрабатываются, но я хотел бы получить некоторую информацию и в общем смысле

Примечание:
Я смотрю на вещи в целом, я уверен, что немногие компании могут сделать это по-другому и т.д.

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

Спасибо!

1 Ответ

2 голосов
/ 05 июня 2011

Нет разницы между статическим или динамическим для браузера.Браузер отправляет HTTP-запрос и получает HTTP-ответ.Если ответ является HTML-страницей, браузер отображает HTML, применяет стили и выполняет код JavaScript, поставляемый со страницей.Эта страница может быть динамической или статической - браузеру все равно!Сторона - это забота - это сторона сервера.Если страница статическая, то HTTP-сервер просто возьмет страницу с диска и отправит ее клиенту в качестве ответа HTTP.Если страница является динамической, то HTTP-сервер вызовет какое-либо приложение и попросит это приложение предоставить запрошенный ресурс.Это приложение может быть модулем PHP для Apache (http-сервер), ASP.net для IIS или даже вашим кодом C ++, который будет генерировать любой контент, который вы хотите.Как именно будет построена страница или ресурс (HTTP-ответ может быть также xml, или изображением и т. Д.), Зависит от используемого приложения (технология на стороне сервера).

Например, если вы используете PHP - HTTP-сервер обнаружит, чтозапрашиваемый ресурс имеет расширение .php, сервер передаст этот файл PHP в модуль PHP для обработки, а результат будет отправлен в качестве ответа клиенту HTTP (браузеру).

Когда пользователь выполняет какое-либо действие, это снова просто обычноHTTP-запрос.HTTP-метод GET и POST (см. Статью о HTTP в Википедии) используется для передачи некоторого ввода с сервера на клиент.Страница может содержать несколько тяжелых JS, которые сделают страницу более похожей на настольное приложение (богатые элементы управления, динамически реагирующие на действия пользователя без запроса к серверу или взаимодействующие с сервером в фоновом режиме), но это не обязательно для веб-приложения, чтобы быть веб-приложением(для динамического сайта).Это может быть старый добрый статический HTML с HTML-формами и некоторым серверным кодом.

Веб-приложение - это абстрактная сущность, которая может состоять из множества HTTP-ресурсов (разные URL-адреса для ответа сервера).Веб-приложение также является клиентским кодом, который связывается с серверным кодом через HTTP с помощью HTTP-клиента (браузера) и HTTP-сервера.Веб-приложение - это не отдельная часть, которая работает только тогда, когда пользователь выполняет какое-либо действие.

Веб-сервис может соответствовать этому описанию - как вещь, которая обычно не заботится о страницах, и появляется только тогда, когда некоторыенеобходимое действие.Это специальный тип веб-приложения, которое предоставляет API через HTTP (обычно).Вы можете запросить некоторый ресурс и передать некоторый параметр, и вы получите ответ с некоторым результатом.Это то же самое веб-приложение, но без страниц.Но веб-сервис обычно является частью большого веб-приложения со страницами или даже другой частью того же веб-приложения (в зависимости от того, как вы на это смотрите).Это может быть та же серверная технология и тот же HTTP-сервер.И нет необходимости создавать веб-сервис, если вы хотите создать какое-либо веб-приложение (динамический веб-сайт).

Серверная часть веб-приложения также может взаимодействовать с некоторой базой данных, но это также не обязательно.На диске может быть настоящая база данных или просто текстовые файлы.А браузер, клиентский код и HTTP-сервер также не заботятся о базе данных или источнике, куда код серверной стороны берет данные.

Кэш, балансировщик нагрузки и т. Д. - это просто дополнительные элементы, которые обычно прозрачны для всего этого общегоstuff.

Файлы cookie передаются с каждым HTTP-запросом на HTTP-сервер, и, если запрашиваемый ресурс не является статической страницей, этот HTTP-сервер будет передавать их далее на серверный код / ​​в приложение (часть).И обычно работает аутентификация и авторизация - куки содержат информацию о сеансе, и есть некоторые данные, связанные с сеансом, на стороне сервера - это может быть идентификатор пользователя, поэтому код на стороне сервера будет распознавать пользователя при каждом запросе.

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