Я планировал создать веб-сайт, на котором будет довольно много динамического контента, и хочу знать, что было бы наиболее разумным выбором для части моего веб-стека.
Прямо сейчас я пытаюсь решить, следует ли мне разрабатывать на nginx, используя PHP для доставки динамического контента, или использовать nginx в качестве прокси для Tomcat и использовать сервлеты для доставки динамического контента.
У меня большой опыт работы с Java, JSP и сервлетами, так что это сразу плюс. Кроме того, поскольку это скомпилированный язык, он будет выполняться быстрее, чем PHP (подразумевается Вот что Java примерно в 37 раз быстрее, чем PHP) и будет Создайте веб-страницы быстрее.
У меня нет опыта работы с PHP, однако мне кажется, что его легко освоить. Это медленнее, чем Java, но поскольку клиент будет взаимодействовать только с nginx, я думаю, что сервировка Таким образом, динамически создаваемые веб-страницы для клиента будут быстрее.
Учитывая эти вещи, я хотел бы знать:
Я не против изучения PHP, если, в конце концов, он даст мне лучшую производительность. Я просто хочу знать, что было бы лучшим выбором с этой точки зрения.
Когда дело доходит до выбора между Java и PHP, вам нужно помнить следующее:
На вопрос, какой из них будет работать лучше, невозможно ответить, если вы не создадите одно и то же приложение с обоими языками, а затем развернете и протестируете их оба. Это, конечно, слишком дорого и требует много времени для 99,9999% команд.
Когда вы сталкиваетесь с таким выбором, вот несколько вопросов, которые вы можете задать вместо того "какой язык работает лучше":
Если ответ - PHP, то, на мой взгляд, глупо пытаться написать приложение на другом языке для ожидаемого увеличения производительности. Однако, если вашей команде (даже если это только вы) гораздо удобнее работать с Java, то, вероятно, будет хорошей идеей посвятить свое время тому, что вы знаете так хорошо, как можете.
HTH!
Мои предположения верны?
Не совсем то, что установка nginx перед Tomcat будет во многом такой же, как установка nginx с PHP, работающим через CGI, с использованием nginx "default" php-fpm.
Вы могли бы использовать отличные возможности nginx для статического контента, просто перенаправляя и возвращая динамический контент из вашего Tomcat.
Где возникает узкое место: создание страниц или их передача клиенту?
По сравнению с простым запуском Tomcat: вероятно, нигде, во всяком случае, вы избавите Tomcat от выполнения Java-части, в то время как nginx обрабатывает все остальное. Добавьте или возьмите дополнительное время, необходимое nginx для запроса и обслуживания страницы из Tomcat.
Даст ли проксирование Tomcat с помощью nginx мне какое-либо преимущество в производительности nginx, если я собираюсь использовать Tomcat для генерации динамического контента?
Да.
Кроме того, поскольку это скомпилированный язык, он будет выполняться быстрее, чем PHP (здесь подразумевается, что Java примерно в 37 раз быстрее, чем PHP).
Не верьте всему, что читаете в Интернете;)
Хотя интерпретируемый язык, скорее всего, всегда будет уступать в производительности скомпилированному коду, Opcode-cache обычно приходит на помощь и переводит код в полукомпилированное состояние, что имеет тенденцию значительно ускорять работу.
Не в пределах скомпилированного кода, но достаточно близко.