Вам бонус- начислено 1 монета за дневную активность. Сейчас у вас 1 монета

Что происходит на сервере? - 1.6. Работа сайта, браузера и

Лекция



Другие правильно ответили на 100% вопросов

Это окончание невероятной информации про сайт.

...

содержимое запроса выполнено.

Сервер отвечает кодом ответа, обозначающим статус запроса, и отвечает ответом в форме:

200 ОК
[заголовки ответов]

За ним следует один символ новой строки, а затем отправляется полезная нагрузка HTML-содержимого www.google.com. Затем сервер может либо закрыть соединение, либо, если заголовки, отправленные клиентом, запросили его, оставить соединение открытым для повторного использования для дальнейших запросов.

Если заголовки HTTP, отправленные веб-браузером, включали достаточно информации для веб-сервер а, чтобы определить, не изменилась ли версия файла, кэшированного веб-браузером, с момента последнего извлечения (т. Е. Если веб-браузер включил ETagзаголовок), он может вместо этого ответьте запросом в форме:

304 Не изменено
[заголовки ответов]

и никакой полезной нагрузки, и вместо этого веб-браузер извлекает HTML из своего кеша.

После анализа HTML веб-браузер (и сервер) повторяет этот процесс для каждого ресурса (изображения, CSS, favicon.ico и т. Д.), На который ссылается HTML-страница, за исключением того, что вместо GET / HTTP/1.1запроса будет GET /$(URL relative to www.google.com) HTTP/1.1.

Если HTML ссылается на ресурс в другом домене www.google.com, веб-браузер возвращается к шагам, связанным с разрешением другого домена, и выполняет все шаги до этого момента для этого домена. В Hostзаголовке запроса будет указано соответствующее имя сервера, а не google.com.

Обработка запроса HTTP-сервера

Сервер HTTPD (HTTP Daemon) - это сервер, обрабатывающий запросы / ответы на стороне сервера. Наиболее распространенными серверами HTTPD являются Apache или nginx для Linux и IIS для Windows.

  • HTTPD (HTTP Daemon) получает запрос.
  • Сервер разбивает запрос на следующие параметры:

    • HTTP - запрос метода (или GET, HEAD, POST, PUT, PATCH, DELETE, CONNECT, OPTIONS, или TRACE). В случае ввода URL-адреса непосредственно в адресную строку это будет GET.
    • Домен, в данном случае - google.com.
    • Запрошенный путь / страница, в данном случае - / (поскольку конкретный путь / страница не запрашивался, / является путем по умолчанию).
  • Сервер проверяет наличие виртуального хоста, настроенного на сервере, который соответствует google.com.
  • Сервер проверяет, может ли google.com принимать запросы GET.
  • Сервер проверяет, разрешено ли клиенту использовать этот метод (по IP, аутентификации и т. Д.).
  • Если на сервере установлен модуль перезаписи (например, mod_rewrite для Apache или URL Rewrite для IIS), он пытается сопоставить запрос с одним из настроенных правил. Если найдено подходящее правило, сервер использует это правило для перезаписи запроса.
  • Сервер получает контент, соответствующий запросу, в нашем случае он возвращается к индексному файлу, поскольку «/» является основным файлом (в некоторых случаях это можно переопределить, но это наиболее распространенный метод).
  • Сервер анализирует файл в соответствии с обработчиком. Если Google работает на PHP, сервер использует PHP для интерпретации индексного файла и передает вывод клиенту.

1.6. Работа сайта, браузера и сервера последовательность взаимодействия и назначение элементов

За кулисами браузера

После того, как сервер предоставит браузеру ресурсы (HTML, CSS, JS, изображения и т. Д.), Он проходит следующий процесс:

  • Парсинг - HTML, CSS, JS
  • Рендеринг - Построение дерева DOM → Дерево рендеринга → Макет дерева рендеринга → Рисование дерева рендеринга
  • работа js event loop

Браузер

Функциональность браузера заключается в том, чтобы представить выбранный вами веб-ресурс, запросив его с сервера и отобразив в окне браузера. Ресурс обычно представляет собой HTML-документ, но также может быть PDF-файлом, изображением или каким-либо другим типом содержимого. Расположение ресурса указывается пользователем с помощью URI (унифицированного идентификатора ресурса).

То, как браузер интерпретирует и отображает файлы HTML, указано в спецификациях HTML и CSS. Эти спецификации поддерживаются организацией W3C (Консорциум всемирной паутины), которая является организацией по стандартизации Интернета.

Пользовательские интерфейсы браузера имеют много общего друг с другом. Среди общих элементов пользовательского интерфейса:

  • Адресная строка для вставки URI
  • Кнопки назад и вперед
  • Параметры закладки
  • Кнопки обновления и остановки для обновления или остановки загрузки текущих документов
  • Кнопка "Домой", которая переводит вас на главную страницу

Структура верхнего уровня браузера

Компоненты браузеров:

  • Пользовательский интерфейс: Пользовательский интерфейс включает в себя адресную строку, кнопку «Назад / Вперед», меню закладок и т. Д. Отображаются все части браузера, кроме окна, в котором вы видите запрошенную страницу.
  • Движок браузера: Движок браузера упорядочивает действия между пользовательским интерфейсом и движком рендеринга.
  • Rendering двигатель: Рендеринг двигатель отвечает за отображение запрошенного контента. Например, если запрошенный контент является HTML, механизм рендеринга анализирует HTML и CSS и отображает проанализированный контент на экране.
  • Сеть: сеть обрабатывает сетевые вызовы, такие как HTTP-запросы, с использованием различных реализаций для разных платформ за независимым от платформы интерфейсом.
  • Бэкэнд UI: бэкэнд UI используется для рисования основных виджетов, таких как поля со списком и окна. Этот бэкэнд предоставляет общий интерфейс, не зависящий от платформы. Внизу используются методы пользовательского интерфейса операционной системы.
  • Механизм JavaScript : Механизм JavaScript используется для анализа и выполнения кода JavaScript.
  • Хранение данных: хранилище данных - это постоянный уровень. Браузеру может потребоваться локальное сохранение всех видов данных, например файлов cookie. Браузеры также поддерживают такие механизмы хранения, как localStorage, IndexedDB, WebSQL и FileSystem.

Парсинг HTML

Механизм визуализации начинает получать содержимое запрошенного документа с сетевого уровня. Обычно это делается кусками по 8 КБ.

Основная задача парсера HTML - преобразовать разметку HTML в дерево синтаксического анализа.

Выходное дерево («дерево синтаксического анализа») представляет собой дерево элементов DOM и узлов атрибутов. DOM - это сокращение от Document Object Model. Это объектное представление HTML-документа и интерфейс элементов HTML для внешнего мира, например JavaScript. Корнем дерева является объект «Документ». До каких-либо манипуляций с помощью скриптов DOM имеет почти однозначное отношение к разметке.

Алгоритм разбора

HTML нельзя проанализировать с помощью обычных нисходящих или восходящих парсеров.

Причины:

  • Всепрощающий характер языка.
  • Тот факт, что браузеры имеют традиционную устойчивость к ошибкам для поддержки хорошо известных случаев недопустимого HTML.
  • Процесс синтаксического анализа повторяется. Для других языков источник не изменяется во время синтаксического анализа, но в HTML динамический код (например, элементы сценария, содержащие вызовы document.write ()) могут добавлять дополнительные токены, поэтому процесс синтаксического анализа фактически изменяет ввод.

Невозможно использовать обычные методы синтаксического анализа, браузер использует специальный синтаксический анализатор для анализа HTML. Алгоритм парсинга подробно описан в спецификации HTML5.

Алгоритм состоит из двух этапов: токенизации и построения дерева.

Действия после завершения разбора

Браузер начинает получать внешние ресурсы, связанные со страницей (CSS, изображения, файлы JavaScript и т. Д.).

На этом этапе браузер помечает документ как интерактивный и начинает анализировать сценарии, находящиеся в «отложенном» режиме: те, которые должны быть выполнены после анализа документа. Состояние документа устанавливается на «завершено», и запускается событие «загрузка».

Обратите внимание, что на странице HTML никогда не бывает ошибки «Недопустимый синтаксис». Браузеры исправляют любой недопустимый контент и продолжают.

Интерпретация CSS

  • Анализируйте файлы CSS,

Что происходит на сервере?

1.6. Работа сайта, браузера и сервера последовательность взаимодействия и назначение элементов

Если на сервер Nginx пришел HTTP-запрос , то Nginx станет передавать данный запрос на выполнение PHP-FPM, Nginx вернет результат полученный из PHP-FPM.

Выполнение PHP - это четырехэтапный процесс:

  • Lexing / Tokenizing : сначала интерпретатор считывает код PHP и создает набор токенов.
  • Анализ : интерпретатор проверяет, соответствует ли сценарий правилам синтаксиса, и использует токены для построения абстрактного синтаксического дерева (AST), иерархического представления структуры исходного кода .
  • Компиляция : интерпретатор просматривает дерево и переводит узлы AST в коды операций Zend низкого уровня, которые являются числовыми идентификаторами, определяющими тип инструкции, выполняемой Zend VM .
  • Интерпретация : коды операций интерпретируются и запускаются на виртуальной машине Zend.

На следующем изображении показано визуальное представление основного процесса выполнения PHP.

1.6. Работа сайта, браузера и сервера последовательность взаимодействия и назначение элементов

Базовый процесс выполнения PHP

Итак, как OPcache делает PHP быстрее? А что изменится в процессе выполнения с JIT?

  1. Расширение OPcache
  2. Предварительная загрузка
  3. JIT - компилятор Just in Time

Расширение OPcache

PHP - это интерпретируемый язык. Это означает, что при запуске сценария PHP интерпретатор анализирует, компилирует и выполняет код снова и снова при каждом запросе. Это может привести к потере ресурсов ЦП и дополнительному времени.

Здесь на помощь приходит расширение OPcache :

«OPcache повышает производительность PHP, сохраняя байт-код предварительно скомпилированного сценария в общей памяти, тем самым устраняя необходимость для PHP загружать и анализировать сценарии при каждом запросе».

При включенном OPcache интерпретатор PHP проходит через упомянутый выше четырехэтапный процесс только при первом запуске скрипта. Поскольку байт-коды PHP хранятся в общей памяти, они сразу же доступны как низкоуровневое промежуточное представление и могут быть сразу выполнены на виртуальной машине Zend.

1.6. Работа сайта, браузера и сервера последовательность взаимодействия и назначение элементов

Процесс выполнения PHP с включенным OPcache

Начиная с PHP 5.5, расширение Zend OPcache доступно по умолчанию, и вы можете проверить, правильно ли оно настроено, просто вызвав phpinfo() из скрипта на вашем сервере или проверив файл php.ini

1.6. Работа сайта, браузера и сервера последовательность взаимодействия и назначение элементов

1.6. Работа сайта, браузера и сервера последовательность взаимодействия и назначение элементов

Раздел Zend OPcache на странице phpinfo

Предварительная загрузка

OPcache был недавно улучшен за счет реализации предварительной загрузки , новой функции OPcache, добавленной в PHP 7.4 . Предварительная загрузка предоставляет способ сохранить указанный набор сценариев в памяти OPcache « до запуска любого кода приложения. Тем не менее, это не приносит ощутимого улучшения производительности для типичных веб-приложений.

Вы можете узнать больше о предварительной загрузке во введении в PHP 7.4 .

Благодаря JIT PHP делает шаг вперед.

JIT - компилятор Just in Time

Даже если коды операций представляют собой низкоуровневое промежуточное представление, они все равно должны быть скомпилированы в машинный код. JIT «не вводит дополнительную форму IR (промежуточное представление)», но использует DynASM (динамический ассемблер для механизмов генерации кода) для генерации собственного кода непосредственно из байт-кода PHP.

Короче говоря, JIT переводит горячие части промежуточного кода в машинный код . В обход компиляции можно было бы значительно улучшить производительность и использование памяти.

1.6. Работа сайта, браузера и сервера последовательность взаимодействия и назначение элементов

1.6. Работа сайта, браузера и сервера последовательность взаимодействия и назначение элементов

примеры обработки веб форм и авторизации

Структура и логика работы элементарного веб-приложения (написанного на PHP, Java (Servlet) и C# (MVC)) с использованием шаблонизации

1.6. Работа сайта, браузера и сервера последовательность взаимодействия и назначение элементов

Тесты с ответами для самопроверки онлайн

1. Какова основная функция веб-браузера?

  • A) Хранение данных на сервере
  • B) Отображение веб-страниц*
  • C) Управление сетевыми подключениями
  • D) Защита от вирусов

2. Какой элемент используется для отправки запросов к серверу?

  • A) URL*
  • B) IP-адрес
  • C) DNS
  • D) HTML-код

3. Какой процесс происходит при вводе URL в адресной строке браузера?

  • A) Браузер обращается к локальному кэшу
  • B) Браузер отправляет HTTP-запрос на сервер*
  • C) Браузер загружает файлы с локального диска
  • D) Браузер закрывает текущее соединение

4. Что происходит после отправки HTTP-запроса на сервер?

  • A) Сервер обрабатывает запрос и отправляет ответ*
  • B) Браузер закрывает соединение
  • C) Запрос сохраняется в кэше
  • D) Сервер отправляет запрос на другой сервер

5. Какой протокол обычно используется для передачи данных между браузером и сервером?

  • A) FTP
  • B) HTTP*
  • C) SMTP
  • D) DNS

6. Какой ответ сервер отправляет браузеру после успешной обработки запроса?

  • A) 404 Not Found
  • B) 500 Internal Server Error
  • C) 200 OK*
  • D) 301 Moved Permanently

7. Какую информацию содержит HTTP-заголовок?

  • A) Только текстовые данные
  • B) Метаданные о запросе и ответе*
  • C) Статус подключения
  • D) Данные для шифрования

8. Какой элемент веб-страницы отвечает за структуру и содержание?

  • A) CSS
  • B) HTML*
  • C) JavaScript
  • D) XML

9. Какой тип запроса используется для отправки данных на сервер?

  • A) GET
  • B) POST*
  • C) PUT
  • D) DELETE

10. Что такое кэширование в контексте браузера?

  • A) Процесс хранения данных для быстрого доступа*
  • B) Процесс сжатия данных для передачи
  • C) Процесс обновления веб-страниц
  • D) Процесс защиты от вредоносных программ

11. Какой компонент браузера отвечает за выполнение JavaScript-кода?

  • A) HTML-парсер
  • B) JavaScript-движок*
  • C) CSS-движок
  • D) Серверный модуль

12. Какой из следующих элементов может быть частью URL?

  • A) Протокол*
  • B) Заголовок
  • C) Кодировка
  • D) Файл

13. Какой заголовок HTTP используется для определения типа содержимого?

  • A) Content-Type*
  • B) Content-Length
  • C) Accept
  • D) User-Agent

14. Что такое статус код 404?

  • A) Успешный запрос
  • B) Не найдено*
  • C) Внутренняя ошибка сервера
  • D) Переход на другой адрес

15. Какой метод используется для получения данных с сервера?

  • A) POST
  • B) GET*
  • C) PATCH
  • D) DELETE

16. Что происходит, когда сервер не может обработать запрос?

  • A) Браузер повторяет запрос
  • B) Сервер отправляет ошибку*
  • C) Запрос кэшируется
  • D) Браузер отображает страницу без данных

17. Какой из следующих элементов определяет, как браузер должен отображать страницу?

  • A) HTTP-заголовки
  • B) HTML и CSS*
  • C) Серверные скрипты
  • D) Кэширование

18. Какой компонент отвечает за безопасность при передаче данных?

  • A) HTTPS*
  • B) HTTP
  • C) FTP
  • D) SMTP

19. Какой элемент URL указывает на конкретный ресурс на сервере?

  • A) Доменное имя
  • B) Путь к файлу*
  • C) Параметры запроса
  • D) Протокол

20. Какой из следующих процессов происходит после получения ответа от сервера?

  • A) Браузер закрывает соединение
  • B) Браузер рендерит страницу*
  • C) Сервер обновляет данные
  • D) Браузер отправляет новый запрос

См. также

А как ты думаешь, при улучшении сайт, будет лучше нам? Надеюсь, что теперь ты понял что такое сайт, веб-сервер, event loop, dns, работа сайта, как работает сайт и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Основы интернет и веб технологий

Продолжение:


Часть 1 1.6. Работа сайта, браузера и сервера последовательность взаимодействия и назначение элементов
Часть 2 Что происходит на сервере? - 1.6. Работа сайта, браузера и

создано: 2014-08-16
обновлено: 2024-11-15
460



Рейтиг 9 of 10. count vote: 2
Вы довольны ?:


Поделиться:

Найди готовое или заработай

С нашими удобными сервисами без комиссии*

Как это работает? | Узнать цену?

Найти исполнителя
$0 / весь год.
  • У вас есть задание, но нет времени его делать
  • Вы хотите найти профессионала для выплнения задания
  • Возможно примерение функции гаранта на сделку
  • Приорететная поддержка
  • идеально подходит для студентов, у которых нет времени для решения заданий
Готовое решение
$0 / весь год.
  • Вы можите продать(исполнителем) или купить(заказчиком) готовое решение
  • Вам предоставят готовое решение
  • Будет предоставлено в минимальные сроки т.к. задание уже готовое
  • Вы получите базовую гарантию 8 дней
  • Вы можете заработать на материалах
  • подходит как для студентов так и для преподавателей
Я исполнитель
$0 / весь год.
  • Вы профессионал своего дела
  • У вас есть опыт и желание зарабатывать
  • Вы хотите помочь в решении задач или написании работ
  • Возможно примерение функции гаранта на сделку
  • подходит для опытных студентов так и для преподавателей

Комментарии


Оставить комментарий
Если у вас есть какое-либо предложение, идея, благодарность или комментарий, не стесняйтесь писать. Мы очень ценим отзывы и рады услышать ваше мнение.
To reply

Основы интернет и веб технологий

Термины: Основы интернет и веб технологий