Повышение производительности за счет использования дополнительного статического файлового сервера
Я планирую создать большой веб-сайт, который будет содержать много статических ресурсов (js, css, изображения и эскизы) на сгенерированных страницах. Этот сайт будет использовать TYPO3
как CMS (это требование клиента).
Я думаю, я мог бы серьезно улучшить производительность / время загрузки страницы, используя установку с двумя серверами. Один сервер, на котором работает основное приложение (PHP), а другой - статические файлы, обслуживаемые урезанной версией apache или чем-то вроде lighthttpd.
Включение, например, файлов js или css с файлового сервера, конечно, не составляет большого труда. Просто используйте абсолютный URL http://static.example.com/js/main.js
и покончим с этим.
Но: на этом сайте будут страницы с МНОГИМИ миниатюрами, например, изображениями продуктов. Итак, я вижу две проблемы, когда основное приложение пытается создать эскиз некоторого изображения:
оригинальное изображение как
products/some.jpg
загружается на статический файловый сервер и, следовательно, не на тот же сервер, что и приложение PHP, которое пытается создать миниатюру.TYPO3 записывает созданные эскизы во временный каталог, который, как ожидается, будет находиться на том же сервере. Поэтому сотни миниатюр будут записываться и обслуживаться из этого временного каталога, который находится на том же сервере, что и основное приложение -> статический файловый сервер в этом случае в основном бесполезен, все миниатюры будут запрашиваться с сервера основного приложения.
Итак, мой вопрос: как преодолеть эти недостатки?
Можно ли "символическую ссылку" некоторых каталогов на другой сервер?
Так, например, если PHP пытается открыть исходное изображение продукта для создания эскиза с imagecreate("products/some.jpg")
папка products на самом деле "указывает" на папку products на сервере статических изображений? Я знаю, что-то подобное можно сделать с .htaccess
но возможно ли это на уровне файловой системы?
3 ответа
Лак кеш отлично подходит для этого!
http://www.mocsystems.com/typo3temp/pics/1bd7cb81a0.png
Вы можете найти это искусство интересным.
Я бы сказал, что первое, что нужно сделать, это просто начать с mod_expires
чтобы уменьшить статические запросы файлов, то, возможно, добавить mod_deflate
снизить пропускную способность.
Только когда вы действительно увидите серьезную нагрузку, начните разделение на отдельные серверы.
Перемещение статических запросов к другому серверу на одном и том же apache (возможно, с использованием того же корня документа) должно быть хорошим первым шагом при разбиении.
Похоже, никто не ответил на настоящий вопрос.
Наличие разных обработчиков запросов к статическим файлам существенно отличается от обработки всех запросов одним и тем же кэширующим прокси.
Наличие отдельного сервера для статических файлов позволяет клиентам обрабатывать больше загрузок параллельно.
Я также заинтересован в решении, чтобы легко сделать это в TYPO3. Мне не понадобится статический сервер на отдельной машине. Так что доступ к файловой системе для меня не проблема.