Веб-сервер bsic, такой как python SimpleHTTPServer
или THTTPD
читает статические файлы с минимальной обработкой; таким образом, довольно быстро. Обычно добавление дополнительных функций для создания расширенного веб-сервера (но все же легкого, например nginx
) замедлит этот процесс.
Может ли продвинутый веб-сервер сыграть трюк, чтобы ускорить процесс? или проще простого невозможно, а самый простой - это самый быстрый способ читать статические файлы? Я имею ввиду могу nginx
(или другие легкие веб-серверы, которые утверждают, что они быстрые) будут быстрее, чем THTTPD
(или другие базовые веб-серверы с минимальным процессом)?
А что насчет скриптов CGI, так как HTTPD
и питон CGIHTTPServer
может просто выполнять сценарии cgi.
«Простой» и «Быстрый» не всегда связаны, особенно в вычислениях - в этом случае SimpleHTTPServer использует простые методы чтения файлов, простые сетевые методы, чистую и очевидную обработку, которую легко читать новому программисту, и т. Д .; nginx имеет массу сложного кода, позволяющего максимально эффективно использовать расширенные высокоскоростные файловые и сетевые API-интерфейсы, странные трюки с распределением памяти, чтобы избежать копирования данных и т. д.
Кроме того, накладные расходы на язык - python работает достаточно быстро, когда вашим узким местом является база данных или файловая система, но я действительно обнаружил, что для обслуживания тысяч миниатюр в секунду nginx со всеми его сложными вещами на C в 10 раз быстрее, чем простая программа на Python. который просто возвращает данные из памяти.
Что касается THTTPD и nginx, они оба C, и оба предназначены для скорости, а не простоты, поэтому я предполагаю, что они будут ближе по производительности, но thttpd, похоже, последний раз обновлялся в 2003 году, что означает, что он предшествует дате большинство высокоскоростных API, которые использует nginx.
В общем, проще значит быстрее. Однако вы не будете уверены, что сервер x быстрее, чем сервер y, если не попробуете сами. Вы также можете посмотреть на уже выполненные тесты (если таковые имеются), чтобы иметь представление об этом.
Усовершенствованный веб-сервер может работать медленнее, чем простой / базовый сервер из-за дополнительной сложности. Однако расширенный сервер может быть лучше в других сценариях. Расширенный сервер обычно позволяет включать / выключать некоторые функции и оптимизировать их для повышения производительности. Итак, общего ответа нет!
Веб-серверы с меньшим количеством функций имеют меньший объем памяти и ЦП, что позволяет им быстрее выполнять определенные задачи. Некоторые из них также специально предназначены для решения одной задачи.
Вот почему появилось такое программное обеспечение, как PHP-FPM. Вместо раздутого процесса apache2, который загружает модуль PHP для каждого отдельного процесса, вы предпочитаете использовать интерфейс для статических файлов (например, nginx) и серверную часть (например, PHP-FPM через FastCGI) для динамических приложений.
Однако это зависит от вашего использования и окружающей среды. Если вы выполняете 99% динамическую обработку, это может не стоить хлопот. Хорошим примером может быть приложение Java ... не имеет большого смысла выполнять всю работу по настройке внешнего и внутреннего интерфейса, когда вы можете просто использовать tomcat и ничего больше.