2016-06-29 3 views
0

У меня есть форум, на котором пользователи обмениваются фотографиями и текстом друг с другом на домашней странице. На главной странице отображаются 20 последних объектов - будь то фотографии или текст. 21-й объект вытесняется из поля зрения. Новая фотография загружается каждые 5 секунд. Новая текстовая строка отправляется каждую секунду. Примерно через 20 секунд фотография, которая появилась сверху, исчезла внизу.Использование CDN для динамического веб-сайта

Мой вопрос: могу ли я улучшить производительность, если бы я представил CDN в миксе?

Поскольку содержание меняется, кажется, я не должен этого делать. Однако, когда я думаю об этом логически, похоже, я получу повышение производительности от введения CDN для своих фотографий. Вот как. Представьте, что фото опубликовано, появляясь на странице при t = 1 и оставаясь там до t = 20. Первый пользователь, получивший доступ к странице (ближе к t = 1), позволит прикрепить фото к пограничному серверу. После этого любой, кто обращается к фото, будет получать его от CDN; это будет продолжаться до t = 20, после чего фото исчезнет. Это настоящий рост производительности.

Может кто-нибудь прокомментировать, каковы недостатки в моих рассуждениях и/или что я не могу рассмотреть? Также было бы полезно узнать, какие альтернативные оптимизации производительности я могу сделать для такого веб-сайта, как мой. Заранее спасибо.

ответ

1

все запросов, поражающих ваш сервер, который включает в себя основной динамически созданный HTML-документ, а также все статические активы, такие как файлы CSS, файлы Javascript и, да, файлы изображений (как статические, так и загруженные пользователем) , HTML-документ будет ссылаться на несколько других активов, каждый из которых необходимо загрузить отдельно и, таким образом, нанести серверный удар. Предполагая ради аргумента, что каждый посетитель имеет пустой локальный кеш, одностраничная загрузка может потребовать, скажем, 50 попыток ресурсов для вашего сервера.

Возможно, единственным запросом, который на самом деле является , который будет обрабатываться вашим сервером, является динамически созданный HTML-документ, если он специфичен для пользователя (поскольку они вошли в систему). Все остальные 49 запросов ресурсов одинаковы для всех посетителей и могут быть легко удалены в CDN. Те, кто просто поразит ваш сервер один раз [для каждого региона], а затем будут кэшироваться CDN и редко беспокоят ваш сервер. Вы можете даже иметь кэш CDN public HTML-документы, например. для незарегистрированных пользователей вы можете позволить HTML-документам CDN кэша в течение ~ 5 секунд, в зависимости от того, насколько последним вы хотите, чтобы ваш сайт отображался; поэтому CDN может обрабатывать весь сеанс просмотра, не затрагивая ваш сервер вообще.

Если у вас есть примерно одна новая загрузка в секунду, это означает, что есть вероятность, что величина будет более пассивной посетителей в секунду. Если вы можете позволить CDN обрабатывать ~ 99% запросов, это dramatic уменьшение фактических просмотров на вашем сервере.Если вы умны с тем, что вы кешируете, и как долго и в зависимости от вашего конкретного сочетания анонимных и аутентифицированных пользователей, вы можете легко уменьшить нагрузку на сервер на величину или два. С другой стороны, вы ускоряете время загрузки страницы для своих посетителей.

Для каждого HTML документа и другого актива, на самом деле думаете, может ли это быть в кэше, и как долго:

  • Для HTML документов, является пользователь вошел в? Если нет, и нет другого определенного отслеживания файлов cookie или подобных вещей, то актив остается статическим и общедоступным для всех целей и целей и может быть кэширован. Определите максимальный возраст для документа и дайте CDN кешу. Даже кэширование всего за секунду делает огромную разницу, когда вы получаете 1000 ударов в секунду.

  • Если пользователь является входа в систему, установите прагму кэша private, но все-таки давайте кэш браузера посетителя его в течение нескольких секунд. Эти заголовки должны определяться вашим программным обеспечением форума, пока он создает документ.

  • Для всех других активов, которые не имеют доступа к ограничению: пусть CDN кэширует его для времени, и вы можете практически забыть о том, что когда-либо придется обслуживать эти конкретные файлы. Эти заголовки могут быть статически настроены для целых каталогов на веб-сервере.

2

У вас все в порядке. Пока кто-то обращается к фотографии в течение 20 секунд, чтобы изображение находилось в пределах видимости, оно будет выведено на пограничный сервер. Затем по последующим запросам другие посетители получат кешированный ответ от ближайшего пограничного сервера.

Если вы используете CDN для доставки только ваших статических активов, проблем с настройкой не должно быть.

Кроме того, вы можете ознакомиться с CDN, который поддерживает HTTP/2. Это обеспечит вам улучшенную производительность. Проверьте cdncomparison.com для сравнения между популярными поставщиками CDN.

Смежные вопросы