Серверные сценарии
В этой статье есть несколько проблем. Пожалуйста, помогите улучшить его или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти шаблонные сообщения )
|
Серверные сценарии — это метод, используемый в веб-разработке , который включает использование сценариев на веб-сервере , которые создают ответ, настроенный для каждого запроса пользователя (клиента) на веб-сайт. Сценарии можно писать на любом из множества доступных серверных языков сценариев. Сценарии на стороне сервера отличаются от сценариев на стороне клиента , где встроенные сценарии, такие как JavaScript , запускаются на стороне клиента в веб-браузере , но оба метода часто используются вместе. Альтернативой одному или обоим типам сценариев является предоставление статической веб-страницы самим веб-сервером .
Серверные сценарии часто используются для предоставления пользователю индивидуального интерфейса. Эти сценарии могут собирать характеристики клиента для использования при настройке ответа на основе этих характеристик, требований пользователя, прав доступа и т. д. Сценарии на стороне сервера также позволяют владельцу веб-сайта скрыть исходный код, генерирующий интерфейс, тогда как в случае с клиентом сторона скриптинга, пользователь имеет доступ ко всему коду, полученному клиентом. Обратной стороной использования сценариев на стороне сервера является то, что клиенту необходимо отправлять дополнительные запросы по сети к серверу, чтобы показать новую информацию пользователю через веб-браузер. Эти запросы могут замедлить работу пользователя, увеличить нагрузку на сервер и помешать использованию приложения, когда пользователь отключен от сервера.
Когда сервер обслуживает данные широко используемым способом, например, по HTTP или FTP протоколам , пользователи могут выбирать из нескольких клиентских программ (большинство современных веб-браузеров могут запрашивать и получать данные, используя оба этих протокола). В случае более специализированных приложений программисты могут написать свой собственный сервер, клиент и протокол связи, которые можно использовать только друг с другом.
Программы, которые запускаются на локальном компьютере пользователя без отправки или получения данных по сети, не считаются клиентами, и поэтому операции таких программ не будут считаться операциями на стороне клиента.
История [ править ]
Netscape представила реализацию JavaScript для серверных сценариев с помощью Netscape Enterprise Server , впервые выпущенного в декабре 1994 года (вскоре после выпуска JavaScript для браузеров). [1] [2]
Серверные сценарии позже использовались в начале 1995 года Фредом Дюфреном при разработке первого веб-сайта для телевизионной станции WCVB в Бостоне, штат Массачусетс . Технология описана в патенте США 5835712 . Патент был выдан в 1998 году и сейчас принадлежит Open Invention Network (OIN). В 2010 году OIN назвал Фреда ДюФрена «Выдающимся изобретателем» за его работу над серверными сценариями.
Объяснение [ править ]
На заре Интернета сценарии на стороне сервера почти исключительно выполнялись с использованием комбинации программ C , сценариев Perl и сценариев оболочки с использованием общего интерфейса шлюза (CGI). Эти сценарии выполнялись операционной системой , а результаты возвращались веб-сервером. Многие современные веб-серверы могут напрямую выполнять языки сценариев, такие как ASP , JSP , Perl , PHP и Ruby , либо непосредственно на самом веб-сервере, либо через модули расширения (например, mod_perl или mod_php ) на веб-сервере. Например, WebDNA включает собственную встроенную систему баз данных. Любая форма сценариев (например, CGI или прямое выполнение) может использоваться для создания сложных многостраничных сайтов, но прямое выполнение обычно приводит к меньшим накладным расходам из-за меньшего количества вызовов внешних интерпретаторов.
Динамические веб-сайты иногда используют собственные серверы веб-приложений, такие как Glassfish , Plack и Python «Base HTTP Server», хотя некоторые могут не считать это скриптами на стороне сервера. При использовании методов динамического веб-скриптинга разработчики должны хорошо понимать логическое, временное и физическое разделение между клиентом и сервером. Например, чтобы действие пользователя инициировало выполнение серверного кода, разработчик, работающий с классическим ASP, должен явно заставить браузер пользователя выполнить обратный запрос к веб-серверу.
Серверные сценарии полностью обрабатываются серверами, а не клиентами. Когда клиенты запрашивают страницу, содержащую серверные сценарии, сервер приложений обрабатывает сценарии и возвращает клиенту HTML-страницу.
Рендеринг на стороне сервера [ править ]
С появлением одностраничных приложений был представлен обновленный подход к написанию сценариев на стороне сервера, известный как рендеринг на стороне сервера. При рендеринге на стороне сервера статический HTML-код может быть отправлен с сервера клиенту, а JavaScript на стороне клиента затем делает веб-страницу динамической , присоединяя обработчики событий к элементам HTML в процессе, называемом гидратацией . Примерами фреймворков, поддерживающих рендеринг на стороне сервера, являются Next.js , Nuxt.js , Angular и React .
Альтернативой рендерингу на стороне сервера является генерация статического сайта . При рендеринге на стороне сервера страница обычно собирается на сервере один раз для каждого запроса. Напротив, при создании статического сайта приложение генерирует все статические HTML-страницы во время сборки. Эти предварительно созданные страницы затем отправляются клиенту при каждом запросе без необходимости их повторного создания. Это приводит к сокращению времени рендеринга, поскольку не нужно создавать новую страницу при каждом запросе; сервер просто передает файл, который он уже сгенерировал ранее. Минус в том, что при изменении некоторых данных на странице их необходимо перестраивать. Примерами инструментов генерации статических сайтов являются Jekyll и Gatsby . Сайты, созданные с помощью инструментов создания статических сайтов, часто размещаются на Netlify или GitHub страницах .
Языки [ править ]
Доступен ряд языков сценариев на стороне сервера, в том числе:
- АктивВФП (*.avfp)
- АСП (*.asp)
- Веб-формы ASP.NET (*.aspx)
- Веб-страницы ASP.NET (*.cshtml, *.vbhtml)
- Язык разметки ColdFusion (*.cfm)
- Иди (*.go)
- Скрипт Google Apps (*.gs)
- Взломать (*.php)
- Haskell (*.hs) (пример: Yesod )
- Java (*.jsp, *.do) через страницы JavaServer
- JavaScript с использованием серверного JavaScript (*.ssjs, *.js) (пример: Node.js )
- Лассо (*.lasso)
- Двойной (*.lp *.op *.dua)
- Парсер (*.p)
- Perl через модуль CGI.pm (*.cgi, *.ipl, *.pl)
- PHP (*.php, *.php3, *.php4, *.phtml)
- Python (*.py) (примеры: Pyramid , Flask , Django )
- Р (*.rhtml)
- Ruby (*.rb, *.rbw) (пример: Ruby on Rails )
- Ткл (*.tcl)
- ВебДНК (*.dna,*.tpl)
- Прогресс WebSpeed (*.r,*.w)
См. также [ править ]
- Сценарии на стороне клиента
- Система управления контентом (CMS)
- Краевая сторона включает в себя
- ДСП
- Node.js
- Next.js
- Краткое описание веб-дизайна и веб-разработки
- Перл/Плак
- PHP
- Включения на стороне сервера (SSI)
- Веб-разработка
Ссылки [ править ]
- ^ «Руководство по серверному JavaScript» . Корпорация Netscape Communications. 1998 год . Проверено 25 апреля 2012 г.
- ^ Майк Морган (1996). «Использование Netscape™ LiveWire™, специальная версия» . Que.