Сообщество - Web-технологии

Web-технологии

534 поста 5 786 подписчиков

Популярные теги в сообществе:

7

Как подготовить сайт к большим нагрузкам: 5 практических советов и полезные инструменты

Как подготовить сайт к большим нагрузкам: 5 практических советов и полезные инструменты

Пользователи очень не любят, когда нужный им онлайн-ресурс «тормозит». Данные опросов говорят о том, что 57% пользователей покинут веб-страницу, если она грузится дольше трех секунд, при этом 47% готовы ждать лишь две секунды. Задержка в одну секунду может стоить 7% конверсии и 16% снижении удовлетворенности пользователей.


Поэтому к росту нагрузки и всплескам трафика нужно готовиться. И сегодня мы поговорим о том, как это сделать.


Примечание: материал нацелен не на гуру системного администрирования, а скорее на владельцев бизнес-сайтов, поэтому он носит скорее обзорный характер.


1. Используйте кеширование


Чем больше контента на сайте можно закешировать, чтобы не загружать каждый раз, когда пользователь заходит на страницу – тем лучше. Обычно, значительная часть контента статична, и ее просто не нужно постоянно перезагружать. Его кеширование особенно важно при всплесках трафика, и может не только помочь ускорить сайт, но и сэкономить.


Если у вас просто сайт, на условном WordPress, то отлично подойдут кеширующие плагины, вроде Cache Enabler или Cachify.


2. Обрабатывайте только полезный трафик


По данным исследований, в современном интернете почти 40% процентов всего трафика генерируется ботами. Боты могут быть как хорошими – например, краулеры поисковых систем – так и плохими. В число последних входят, к примеру, всевозможные парсеры, анализирующие и выкачивающие данные.


В сегменте корпоративного интернета ситуация еще хуже – здесь объемы плохого бот-трафика могут превышать 42%. Для компаний это плохо по двум причинам. Во-первых плохие боты могут быть запущены конкурентами для кражи контента или сбора важных бизнес-данных, во-вторых, бот-трафик создает серьезную дополнительную нагрузку на инфраструктуру.


Избавиться от проблемы и снизить нагрузку на сайт помогают системы фильтрации, но для их корректной работы нужно производить калибровку индивидуально для каждого сайта. Для этого ботовый трафик можно смоделировать. Отличный инструмент для имитации такой нагрузки – это использование сервисов, вроде Infatica, которые позволяют арендовать резидентные прокси.


Многие современные боты используют резидентные IP, а значит для качественного теста понадобится большое количество таких адресов.


3. Балансируйте нагрузку


Изучите доступные варианты инструментов для балансировки нагрузки. Существуют три типа таких решений – работающие на уровне железа, облачные и программные балансировщики.


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


Среди популярных облачных инструментов можно назвать Cloudflare – им часто пользуются компании, испытывающие проблемы из-за всплеска трафика. Из программных вариантов можно назвать Neutrino, серьезные возможности по балансировке нагрузки заложены в веб-сервер Nginx.


4. Оптимизируйте доставку контента


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


Обычно контент сайта располагается на некоем главном сервере в единственной локации, поэтому при поступлении запросов из разных мест, ответы могут приходить пользователям неравномерно – и это выглядит как задержка. Чем дальше пользователь от сервера с сайтом, тем дольше ему нужно ждать ответа.


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


По ссылке можно найти целый список CDN, которые подходят для использования с веб-сайтами.


5. Используйте компрессию


Сжатие файлов – еще один инструмент ускорения загрузки сайта. Очень многие высоконагруженные ресурсы включают Gzip-компрессию для того, чтобы снизить размер файлов сайта для их выгрузки и пересылки.


Gzip работает так – инструмент ищет повторяющиеся строки в файле и заменяет вторую из них указателем на предыдущую строку. Когда браузер распаковывает полученный файл, он проходит по строкам в нем, считывает указатель и отображает «удаленный» контент. Таким образом можно снизить общий вес файлов до 70%. Некоторые хостинг-провайдеры включают Gzip-компрессию по умолчанию, но лучше проверить эту настройку вручную.

Показать полностью
39

Во все тяжкие: Веб-разработчик с нуля. Неделя № 9

Во все тяжкие: Веб-разработчик с нуля. Неделя № 9

«Если бы мы сделали все то, на что мы действительно способны, мы бы буквально поразили нас же самих». (с) Томас А. Эдисон

Цель — Senior Frontend Developer.
Язык: JavaScript.

Исходные данные:
Возраст: 28 лет;
Образование: высшее, инженер ПГС;
Работа (настоящее время): менеджер по продажам.

Неделя удовольствия от программирования.

Уровень мотивации: 7 баллов (из 10).

Режим тренировки основных навыков (ежедневные занятия, кроме вс):
1) Подъем в 06:00, отбой в 00:00 – 00:30. + 1 час на сон вечером;
2) Утренние занятия перед работой – 2 - 2,5 часа, практика;
3) Чтение 30 - 50 стр. книги по IT тематике или связанной с ней (в среднем - одна книга в неделю);
4) Подписка на HTML - Academy (выполнение 10 практических заданий каждый день);
5) Изучение теории и практика после работы, с 21:00 до 00:00.

Режим тренировки дополнительных навыков:
- Чтение 1 главы адаптированной книги на английском + аудирование (в среднем 30 мин. в день).

Сознательные добровольные (временные) ограничения:
1) Не курю;
2) Не пью алкоголь.

Итоги девятой недели:
1) Прочитано 100 страниц книги Питера Гудлифа «Ремесло программиста // Практика написания хорошего кода»;
2) Прошел основы JavaScript по документу от Hexlet.
3) Прошел Workshop по написанию небольшой программы по поиску фильмов. Некоторые вещи осталось непонятными, но в качестве того, чтобы заглянуть на уровень вверх и увидеть реальные примеры использования тех основ, которые я прохожу - это мощно;
4) Прошел основы препроцессора Less. Пока только знакомство с синтаксисом, простые задачки;
5) На базовом уровне разобрался с Bootstrap 4. То чувство, когда адаптивная верстка - easy.

Проблемы с которыми столкнулся, выводы и корректировки:
1) Жизнь внесла коррективы в мой "железный" режим (но я и не сопротивлялся), поэтому один день практически полностью выпал из тренировки, а в один из дней( вторник) я проснулся только около 8 часов, проспал;
2) Верстка тоже выпала, на след. неделе буду заканчивать проект по верстке и углублять ее же;
3) Притормозил прохождение курса по JavaScript, который я начал на прошлой неделе. Там стало сложно, поэтому решил вернуться после разбора основ JS, что я уже практически и сделал.
4) Не ввел дополнительные временные ограничения. Решил чуть ослабить гайки, не гнать лошадей. Так как понял, что даже, когда я устроюсь на работу программистом придется всё равно много всего изучать и дальше. И так всю жизнь. А жизнь проходит. В спешке теряются многие моменты в жизни, теряется вкус настоящего. Не хочу терять вкус, но и не хочу проживать чужую жизнь без результатов. Поэтому ищу баланс.
5) В остальном всё в порядке. Режим тренировки становится родным. Программирование нравится всё больше и больше. Особенно прекрасно чувство, когда получилось то, что долго не работало и не получалось.

Всем добра и реализации в той сфере, которую вы выбрали! До следующей недели.

Показать полностью

Вопросы по Web-разработке

Я столкнулся с некоторыми вопросами.
1. Можно ли хешировать пароль на стороне клиента, чтобы не передавать пароль plaintextом, и как?
2. Как сделать авторизацию пользователя по cookies?
В frontend фреймворках не умею, backend - Node, mongodb.
P. S. Верстка блочная ))

КАТЕГОРИЯ АККОРДЕОН НА OPENCART 2.X БЕЗ МОДУЛЯ

Всем привет.Сегодня хочу Вам расказать как сделать так, что бы на Opencart 2.x заглавная категория в левом меню сайта, там где аккордион была не кликабельна, но при этом раскрывались все дочерние категории.

И так с чего мы начнем?

Первое что необходимо сделать это создать копии файлов сайта или хотя бы тех файлов которые будут описаны в данной статье.Приступим.

Впервую очередь мы пойдем прямиком вот сюда: catalog/controller/module/category.php.

В этом файле находим вот такую строчку:

if ($category['category_id'] == $data['category_id']) {

и меняем на

if ($category['category_id']) {

Следующим шагом будет полная переписка вот этого файла: catalog/view/theme/ВАША_ТЕМА/template/module/category.tpl.

Можете полностью скопировать код ниже:

Должно получиться примерно следующее:

Но главное не забывайте что у каждого результат будет разным, все зависит от Вашего шаблона.

На сегодня все. Надеюсь было полезно. Всем удачного  кодинга)))

Если нужен код, то Вы можете его взять у меня в блоге: https://pyrko.com.ua/opencart/kategoriya-akkordeon-na-openca...

Показать полностью 2
Отличная работа, все прочитано!