Что такое backend и frontend?

Плюсы и минусы профессии

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

Минусы:
непростое обучение;
высокий порог входа: требуется многое знать и уметь;
для получения хорошей должности требуется опыт и серьезное портфолио;
требования к программисту сильно отличаются от компании к компании;
обязательное знание английского;
нет единой концепции при обучении и общего стандарта набора навыков;
для перехода с уровня на уровень требуется не менее 2-3 лет, здесь не возможно быстро построить карьеру и за 5 лет стать ведущим специалистом.

Что такое фулстек?

Фронтенд и бэкенд вовсе не являются взаимоисключающими областями. Разработчики должны хотя бы в общих чертах представлять, что происходит на противоположной стороне. Но есть действительно уникальные специалисты, которые одинаково хорошо себя чувствуют в обоих направлениях: фулстеки (full-stack). Такие разработчики занимаются и клиентской частью приложения, и серверной.

Существует несколько вариантов взаимодействия бэкенда и фронтенда. Это могут быть серверные приложения, в которых HTTP-запросы идут напрямую на сервер, а тот отвечает HTML страницей. Возможна связь с использованием AJAX, в которой запрос генерируется внутри страницы Javascript, а в ответ приходит информация в формате XML или JSON. Клиентские или одностраничные приложения дают возможность с помощью AJAX загружать данные без обновления страницы с помощью специальных фреймворков.

Границы фронтенда и бэкенда статичными не являются. Оба направления постоянно развиваются и заимствуют черты друг друга. Так, появился автономный фронтенд, который позволяет хранит логику приложения и данные в самом клиенте. Легкий бэкенд направлен на сокращение числа обращений к данным за счет бессерверной архитектуры, новых технологий.

Фулстек-разработчик

Фулстек-разработчик так или иначе умеет всё — он работает и с фронтендом, и с бэкендом. То есть нужны навыки из двух профессий. Но за это и платят больше — в небольших компаниях такой человек может заменить нескольких специалистов, а в компаниях покрупнее берёт ответственность за значительную часть проекта.

И если с фронтендом всё примерно понятно — там вёрстка и JavaScript — то по бэкенд-части есть разнообразие. И здесь тоже можно учить Python и PHP, а можно отлично выучить JavaScript, разобраться в Node.js и стать фулстеком только с одним языком. Это звучит как минус, но на самом деле и для таких специалистов есть работа.

А ещё таким специалистам хорошо на фрилансе — можно в одиночку брать сложные заказы и получать за это больше денег.

Сколько нужно людей, чтобы сделать сайт с нуля

И может ли один человек заменить всех?

На профессии «Фулстек-разработчик» в HTML Academy мы готовим как раз специалистов по JavaScript, которые могут и сайт оживить, и бэкенд написать, и всё это на JavaScript — с помощью React и Node.js.

Фулстек-разработчик отвечает за фронтенд и бэкенд и может сделать так, чтобы всё заработало вместе и не развалилось.

Выбор за вами — главное, выбирайте сердцем (ну или исходя из того, где больше платят, тут уж вам решать).

PHP

Это язык, на котором написана большая часть Интернет. Можно быстро запускать веб-приложения с использованием готовых платформ типа WordPress, Laravel, Symfony.

Можно писать бекенд с REST API, где хорошо себя показывает Symfony или Headless WordPress. Laravel тоже вполне себе подходит, если есть нужные разработчики.

PHP — отличный язык для начинающих по ряду причин:

  • он прощает ошибки: вы можете запустить программу, и она будет выполняться, пока не достигнет участка с проблемным кодом;
  • у языка большое сообщество, а для новичков доступно много обучающих материалов. Язык постоянно обновляется, поэтому убедитесь, что изучаете последнюю версию;
  • установить и настроить PHP достаточно легко по сравнению, например, с Ruby on Rails. Вы можете скачать MAMP (для Mac) или WAMP (для Windows), и всё будет готово к работе через 5 минут.

Ничего не мешает вырости до больших сайтов и нагрузок, как в случае с Facebook, Avito, Badoo, WordPress.com.

Что можно делать на PHP

Согласно официальному сайту PHP, вы можете:

  • собирать данные форм (ввод логина/пароля и прочее);
  • создавать динамический контент на страницах;
  • отправлять и получать куки;
  • писать скрипты в командной строке;
  • выполнять сценарии на стороне сервера;
  • разрабатывать настольные приложения.

Минусы PHP

Этот язык часто критикуют за отсутствие асинхронности и event loop. Хотя стоит отметить что это не его территория. На нем обычно пишут бизнес логику и там это скорее плюс чем минус.

Однако построить на нем высоконагруженный REST API микросервис достаточно сложно. Можно конечно использовать дополнительные компоненты типа PHP Swoole или PHP RoadRunner, но иногда все таки лучше смотреть в сторону NodeJS, Golang или Rust.

Тут выбор также очень сильно зависит от тех команд что есть в компании и от их компетенций.

Machine learning in Frontend. Trial

ML может применяться в задачах разработки веб-интерфейсов. Благодаря библиотеке Tensorflow, которая является одной из популярных библиотек для ML и имеет версию для Node.js и браузера, мы получаем возможность машинного обучения на известном стеке. Здесь JavaScript подтверждает свою универсальность.

Эти возможности позволяют решать задачи такими способами, о которых раньше не задумывались, но для этого необходимо теоретическое знание ML. Пример задач, где применим ML, — повышение скорости работы интерфейса.

Одна из наших команд экспериментировала и сделала сервис, предсказывающий вероятность посещения следующей страницы. Затем интегрировала этот сервис в стратегию предзагрузки одного из проектов — теперь в некоторых случаях пользователь при переходе на следующую страницу увидит ее моментально, без ожидания загрузки. Мы разработали свое решение на базе Tensorflow.js. Конкретно для этой задачи существует open-source-решение от Google — Guess.js, которое на основе данных из Google Analytics делает похожее. Советуем попробовать.

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

Что нужно знать и уметь

Фронтенд-специалист – это человек, который знает основы работы по нескольким направлениям. Например, знает как минимум на начальном уровне веб-дизайн и обязанности верстальщика.

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

Профессиональные навыки frontend-разработчика:

  • знать и понимать основы верстки и ее методологий;
  • создавать одинаковые страницы во всех браузерах и в разных устройствах;
  • должен уметь работать с HTML и CSS;
  • разбираться во фреймворках – наборе готовых решений, которые помогают создавать интернет-сервисы быстрее;
  • иметь знания и навыки работы в JavaScript;
  • знать английский язык на уровне Intermediate и выше;
  • иметь представление о начальных этапах работы с адаптивным дизайном;
  • знать, что такое язык серверного программирования, и уметь с ним работать;
  • изучить Git – систему для отслеживания и контроля изменений в версиях файлов.

Личностные характеристики:

  • аналитическое мышление;
  • ответственность;
  • коммуникабельность и умение общаться с разноплановыми специалистами;
  • креативный подход к работе;
  • аккуратность;
  • трудолюбие;
  • способность доносить свои идеи и мысли в устной и письменной формах;
  • умение находить решения проблем;
  • внимательность;
  • соблюдение сроков работы;
  • объективная оценка своих возможностей;
  • целеустремленность;
  • постоянное развитие в сфере IT-технологий, быстрое освоение новых инструментов и сервисов.

Основные инструменты для работы

Frontend-разработчик – это не самая легкая должность. И универсальные инструменты будут упрощать работу специалиста и станут для него незаменимым помощником.

Они позволят ему автоматически выполнять сложную и повторяющуюся работу, увеличат производительность труда.

  1. HTML мы уже затрагивали. Простыми словами это машинный язык для общения с поисковыми системами.
  2. CSS – это язык, на котором описывается внешний вид элементов на веб-страницах.
  3. JavaScript – язык программирования, на котором написаны библиотеки готовых приложений (скриптов). Он является самым важным для frontend-разработчиков.
  4. jQuery – библиотека, которая нужна для создания анимационных деталей и форм онлайн-заявок.
  5. Photoshop – используется для разделения макетов, присланных веб-дизайнером, на составные части.
  6. Шаблонизаторы – позволяют использовать данные для создания конечных html-страниц в динамическом режиме.

Frontend-разработчик

Чем занимается?

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

Технический стек

Чтобы быть успешным frontend-разработчиком, нужно освоить HTML, CSS и JavaScript. На HTML пишут «скелет» страницы, на CSS настраивают цвета, шрифты и ее внутреннее наполнение. После освоения статичных веб-страниц разработчик учится языку JavaScript, который позволяют добавить на сайт динамичные элементы: слайдеры, калькуляторы, анимации.

Рабочий день

Типичный рабочий день frontend-разработчика начинается со встречи или звонка, на котором обсуждаются задачи, приоритеты и проблемы. Затем он скачивает последние версии кода с GitHub (сервис для размещения проектов и совместной работы над ними), просматривает изменения и комментарии и начинает работать. Помимо этого, ему нужно изучать тематические ресурсы, чтобы быть в курсе современных трендов.

Карьерный рост

Начальный уровень в разработке — стажеры (trainee). Это начинающие специалисты, которые закончили курсы и получили базовые знания. Их зарплаты, как правило, не поднимаются выше 30 тыс. руб.

Следующий уровень — джуниор-разработчики, они обладают небольшим опытом работы с проектами и часто советуются с более опытными коллегами. Зарплата джуниор-разработчика в Москве начинается с 60 тыс. руб.

Мидл frontend-разработчик — это опытный человек, способный самостоятельно и качественно решить большинство задач. Его зарплата обычно начинается от 100 тыс. руб.

Синьор frontend-разработчик обладает большим опытом, самостоятельно принимает решения о разработке, имеет свое видение архитектуры проекта и может его обосновать. Помимо этого, он решает менеджерские задачи, участвует в совещаниях с другими отделами.

Курс 

Frontend-разработчик

Получите перспективную IT-профессию с нуля. Вы освоите полный набор знаний и умений, необходимых для создания визуальной части веб-приложений.

Дополнительная скидка 5% по промокоду BLOG.

Узнать больше

Личные качества

Frontend-разработчику полезно быть перфекционистом, так как часто требуется реализовывать замысел дизайнера «пиксель в пиксель». Во frontend-разработке нельзя стоять на месте, она похожа на бег вверх по эскалатору, который едет вниз: постоянно появляются новые инструменты и меняются тренды. Это интересно, но иногда утомительно. Для крупных проектов актуальна командная работа, способность находить общий язык с людьми. 

Алексей Видякин, frontend-разработчик: «Я работаю frontend-разработчиком в сфере рекламы и маркетинга. Больше всего в работе мне нравится, что можно видеть результат сразу же после написания кода. HTML, CSS и JavaScript позволяют визуализировать свои или дизайнерские идеи, сделать интерфейс приложения удобным и понятным для пользователя».

Disappearing Frameworks. Assess

В категорию «Исчезающие фреймворки» попадают фреймворки, выполняющую свою полезную работу на этапе компиляции, генерируя чистый JavaScript без тяжелых абстракций наподобие Virtual DOM. Такие фреймворки максимально легковесны, и их производительность на слабом железе заметно выше.

Кандидаты в эту категорию: Stencil, Svelte, Solid и Angular Elements.

Все из перечисленных решений позиционируют себя как совместимые или имеющие возможность компиляции в Web Components. Это отличная возможность, позволяющая создавать веб-приложения на базе универсальной веб-платформы. За этой группой фреймворков нужно следить и экспериментировать с ними.

Такие фреймворки потенциально могут быть использованы в решении задачи переиспользования UI-компонентов между разными большими фреймворками, что позволит, допустим, иметь одну общую кодовую базу UI Kit.

Более подробно познакомиться с подходом Disappearing Frameworks можно в статье Питера О’Шонесси.

Java

Индекс TIOBE 2021 года ставит Java на второе место среди современных технологий для бэкенд-разработки. Этот рейтинг показывает, что Java является одним из самых влиятельных языков программирования на сегодняшний день. Джеймс Гослинг изобрел язык программирования в 1991 году, но только в 1995 году Sun Microsystems выпустила его.

На протяжении многих лет Java стала предпочтительной платформой для разработчиков, которые предпочитают создавать WEB-приложения с пользовательскими и инновационными функциями. Java также полезна для разработки мобильных приложений и приложений во встроенных устройствах. 

Характеристики

Масштабируемый и простой: Java Enterprise Edition полезен для создания масштабируемых приложений, позволяя серверу запускать несколько экземпляров одновременно. Компоненты Java легко доступны, а его синтаксис сравнительно прост для понимания. Все эти особенности делают его выдающимся в качестве технологии разработки бэкенда.

Многопоточность: Java способна обрабатывать запросы в независимых потоках на многопоточном WEB-сервере. Вот почему Java отлично работает с приложениями, требующими огромной мощности процессора.

Огромные библиотеки с открытым исходным кодом: Разработчики могут использовать огромные библиотеки с открытым исходным кодом для ускорения задач разработки на стороне сервера. Некоторые из этих библиотек включают модульное тестирование, excel, обмен сообщениями, синтаксический анализ JSON и многое другое.

Повышенная безопасность: Java известна своей повышенной безопасностью; она предоставляет множество функций, которые снижают риски безопасности. Например, виртуальная машина Java проверяет байт-коды Java, чтобы не допускать распространение вирусов. Другие функции, повышающие безопасность- это модель безопасности Java и тестирование повторно используемого кода. 

Ограничения

  • Программирование на Java дорого и отнимает много времени
  • Низкоуровневое программирование и команды для сбора мусора изначально отсутствуют.
  • Высокая стоимость аппаратных требований делает реализацию бэкендов на базе javaдостаточно дорогой.
  • Swing toolkit, приложение для разработки графического интерфейса Java, лишено интригующего интерфейса других современных графических инструментов.

Результат

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

  1. За отображение отвечает фронтенд, а за данные — бэкенд.
  2. На фронтенде сохранилась гибкость в плане запросов и получения данных. Интерфейс знает, что можно попросить у сервера и какие ответы должны быть.
  3. На бэкенде появилась возможность менять код с уверенностью, что интерфейс у пользователя продолжит работать. Стал возможным переход на микросервисную архитектуру без необходимости переделывать весь фронтенд.
  4. Появилась возможность использования mock-данных для фронтенда, когда ещё не готов бэкенд.
  5. Создание схем совместной работы исключило проблемы взаимодействия, когда команды понимали одну и ту же задачу по-разному. Сократилось количество итераций по переделке форматов данных: действуем по принципу «семь раз отмерь, один раз отрежь».
  6. Появилась возможность планировать работы на спринт параллельно.
  7. Для реализации отдельных микросервисов теперь можно набирать разработчиков, не знакомых с C++.

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

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

Стать профессионалом во всём невозможно, но для нас это теперь и не нужно.

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

Будущее бэкендера

  • Стандартный путь внутри своего стека: junior с односложными задачами и запросами, middle с глубокими навыками программирования и отличным владением стеком, senior с проектированием, архитектурами, высокими нагрузками и прочим кубернетесом, team lead с управленческими навыками т.д. Это хороший корпоративный путь, внутри которого можно менять компании, проекты, отрасли, расти и быть востребованным.
  • Переход на другой стек и выход из веба: нередко именно бэкенд-разработчики осваивают Java, С/С++ и уходят в «кровавый энтерпрайз», десктопные приложения, разработку средств разработки, нейросети, компьютерное зрение и т.д. Действительно, бэкендеру проще осваивать эти трудные технологии и ЯП.
  • Переход в фуллстек-разработку: бэкендер ближе к фуллстеку и совершить такую трансформацию можно совершенно незаметно.
  • Переход в DevOps, DevSecOps, информационную безопасность — когда знаешь веб-приложения изнутри как свои пять пальцев, этот путь оказывается логичным и весьма доходным.
  • Переход на менеджерские позиции, если есть желание и склонность к управленческим задачам. 
  • Фриланс и своё программное агентство — для смелых и в меру азартных ребят. Можно неплохо зарабатывать на аутсорс-разработке (особенно если идти в сторону фуллстек-разработки).

Что такое backend-разработка

Backend-разработка – это набор специализированных действий. С их помощью backend-разработчик выполняет свои обязанности.

В задачи бэкенд-специалиста входит:

  1. Разработка, организация и управление базами данных.
  2. Проверка личных данных на соответствие.
  3. Обеспечение безопасности веб-сервисов.
  4. Настройка автоматических уведомлений.
  5. Разработка архитектуры кода.
  6. Создание и при необходимости доработка семантического ядра сайта.
  7. API-разработка для связи интернет-платформы с посторонними сайтами.
  8. Оптимизация функций и работы сайта для его быстрой загрузки.
  9. Работа с системами резервного копирования.
  10. Контроль за корректной работой сайта и отладка его компонентов.
  11. Оптимизация алгоритмов для приложений.
  12. Тестирование всего веб-сервиса или его отдельных элементов.
  13. Создание приложений, которые будут поддерживать разработанный интерфейс.
  14. Контроль состояния серверов.

Конечно, не каждый backend-программист способен выполнить все задачи из списка. Но такие разработчики и не выбиваются вперед.

Backend-разработчик

Чем занимается?

Backend-разработчик решает самые разные задачи, начиная от создания каркаса будущего приложения, заканчивая специфическими бизнес-задачами. Например, в банке такой специалист будет анализировать платежи с банковских терминалов и проверять их корректности для предотвращения краж. Еще он проектирует системы хранения и обеспечивает быстроту обмена данными, контролирует их чистоту и корректность доступа к ним. Помимо этого, backend-разработчик пишет системы для автоматического тестирования и проверяет, корректно ли работает программа.

Технический стек

Backend-части часто пишут на PHP, JavaScript и Go; для больших приложений, например банковских, используется Java. У каждого языка, как и любого инструмента, своя область применения. Backend-разработчики активно используют фреймворки — каркасы приложений, в которых фундаментальный функционал уже оптимизирован, это позволяет сосредоточиться на более конкретных задачах.

Рабочий день

Рабочий день backend-разработчика зависит от места работы. В компаниях, занимающихся разработкой собственного продукта, более размеренный ритм, в котором есть пара больших сессий написания кода в день (по 2–3 часа), короткие встречи для синхронизации с командой, обсуждение архитектурных вопросов. У заказной разработки график более рваный: нужно общаться с заказчиками, быстро вносить правки и участвовать во встречах.

Тоже интересно: Чем занимается backend-разработчик в компании, которая делает игры?

Карьерный рост

Карьера начинается с позиции джуниор-разработчика. В течение испытательного срока он изучает процессы разработки, общается с командой и очень много работает. Первые полгода-год джуниор набирается опыта. Если за это время до конца было доведено много задач, багов было немного, а производительность сравнима с более опытными коллегами, можно просить о повышении.

Дальнейший рост может быть разным, как ветки прокачки в компьютерных играх: если вы прокачиваете технические навыки (hard skills), можно вырасти до уровня архитектора. Если вы чувствуете тягу к построению процессов, можно освоить методологии управления Scrum или Agile и обучать команды. Если есть уклон в классический менеджмент, можно вырасти до тимлидов и CTO (Chief Technical Officer, технический директор): в этой области нужно уметь организовывать и строить процессы, а также не бояться общаться с заказчиками.

Личные качества

Ответственность: на плечах такого специалиста лежит очень многое. Но самое главное качество программиста — научиться думать абстракциями. Если человек не может перейти с материального уровня на уровень функций, объектов, паттернов, то ему будет сложновато.

Александр Пряхин, работает в IT-менеджменте, до этого — backend-разработчик на PHP и Java: «Моя профессия нравится мне динамикой. То, что вчера казалось фантастикой, сегодня – реальность. Посмотрите, как Тони Старк в фильме „Железный человек“ 2010 года с телефона показывает видео на телевизоре. Сейчас это обыденность. Программисты создают экосистемы, цифровые миры, высокопроизводительные системы. Разве это не круто?»

Курс

Backend-разработчик

Освойте с нуля программирование на Go и бэкенд-разработку высоконагруженных приложений и станьте незаменимым специалистом. Дополнительная скидка 5% по промокоду BLOG.

Узнать больше

Чем занимаются фронтенд-разработчики

Фронтенд-разработчик превращает дизайн-макет в страницу, которая открывается и работает в браузере. Также он программирует логику поведения визуальных элементов, получает данные от бэкенда, организует их предоставление пользователю. Фронтендер может собирать данные от пользователя, программировать лёгкую обработку этих данных или отправку на бэкенд для дальнейшей обработки.

Что нужно знать фронтенд-разработчику:

  • Языки: HTML, CSS, JavaScript, всё чаще требуется TypeScript.
  • Фреймворки: React, Vue или Angular. Нужно уметь работать с одним из них.
  • Дополнительные инструменты: работа с внешними расширениями через NPM или Yarn, настройка сборки фронтенда (например, Webpack).

Рассмотрим типичную задачу младшего фронтенд-разработчика.

Предположим, у команды есть проект на React и TypeScript. В него нужно добавить компонент, выводящий на страницу иконку. Иконка может быть разных цветов в зависимости от ситуации, в которой она появляется:

‘primary’ — основной цвет,

‘secondary’ — вспомогательный цвет,

‘error’ — цвет в случае ошибки,

‘success’ — цвет в случае успешной операции.

Все цвета заданы в дизайн-системе. Связь названий и цветов описана в файле utils.ts. Выглядит он примерно так:

// utils.ts

type TIconTypes = 'secondary' | 'primary' | 'error' | 'success';

export type TIconProps = { type: TIconTypes, onClick?:() => void; };
export const getIconColor = (type: TIconTypes) => {

  return `${
    type === 'secondary'
      ? '#8585AD'
      : type === 'error'
      ? '#E52B1A'
      : type === 'success'
      ? '#00CCCC'
      : '#F2F2F3'
  }`;
};

В файле описываются возможные типы иконок и то, как они связываются с цветами из дизайн-системы. Младшему фронтенд-разработчику остаётся описать только сам компонент:

// icon.tsx

import React from 'react';
import { getIconColor, TIconProps } from './utils';

export const Icon = ({ type }: TIconProps) => {
  return (
    <svg
      xmlns="<http://www.w3.org/2000/svg>"
      width="24"
      height="24"
      viewBox="0 0 24 24"
      fill={getIconColor(type)}
    >
      <path d="/* здесь будет длинный набор чисел, описывающих svg-изображение */"/>
    </svg>
  );
};

В файле icon.tsx создаем саму иконку так, чтобы при встраивании этого компонента в любое место приложения можно было задать ее состояние.

Это лишь небольшой пример задачи, но он наглядно демонстрирует необходимость понимания дополнительных технологий помимо HTML, CSS и JavaScript: например, React и TypeScript. То, какие технологии потребуются на конкретном проекте, определяет стек, принятый внутри команды или компании. Его нужно либо знать, либо быть готовым быстро в него погрузиться.

Очистка кэша

Каждый запрос проходит через несколько кэшей на пути к бэкэнду. Если вы посещаете сайт в первый раз, подождите, пока он загрузится, а затем перезагрузите страницу.
Веб-приложение загружается быстрее чем в первый раз, поскольку браузер кэширует ресурсы, такие как .

Что если вы хотите внести изменения в ? Вы меняете имя файла. Допустим, вы меняете на , на который ссылается .
Закэшированный становится неактуальным, поскольку к нему никогда не будет другого запроса (если сам index.html не будет закэширован! Запрос к должен быть инвалидирован на бэкэнде).

Современные конвейерные сборки включают в себя очистку кэша для каждой сборки, поэтому большинство javascript файлов выглядят как . Обычно это применяется только к css стилям и скриптам, но вы также можете применить их к изображениям и другим ресурсам.

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

*Примечание переводчика:

В оригинале было так:

Python

Python считается лидирующим универсальный язык программирования, созданный голландским программистом Гвидо ван Россумом в 1991 году. Имея преимущество в создании простых и читаемых кодов, Python используется бэкенд-программистами для написания рациональных и точных скриптов.

Согласно Опросу разработчиков сайтом Stack Overflow в 2020 году, это самая востребованная бэкенд-технология, которую программисты хотят изучить. Уже четвертый год подряд, разработчики ставят Python на первое место в качестве языка, который следует учить. Он также сохраняет третью позицию среди самых любимых технологий программирования.

Характеристики Python 

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

Большое Количество Библиотек: Технология бэкенд-программирования требует использования большого количества библиотек. Эти библиотеки включают в себя коды для модульного тестирования, базы данных, регулярные выражения, просмотр, электронную почту и т. д. Т.е., благодаря поддержке большого количества библиотек бэкенд-инженерам не нужно писать все время один и тот же код.

Доступность: Python использует открытый исходный код и является бесплатным. Именно поэтому разработчики и компании могут использовать для своих проектов большое количество бесплатных библиотек и другие источники. 

Возможности Интернета Вещей: С помощью современных функций языка программирования Python вы можете создавать физические проекты на Raspberry Pi. 

Встраиваемость: Очень просто встроить ваш код Python в исходный код таких языков, как C++.  Тем не менее, программисту не стоит забывать правило: Write Once Run Anywhere(означает, что скомпилированную Java-программу можно запустить на любой платформе, где есть виртуальная машина Java). 

Ограничения Python 

Любое прерывание в коде Python может привести к замедлению выполнения. Это также может плохо сказаться на скорости проекта.

По сравнению с другими бэкенд-технологиями уровни доступа к базам данных Python разработаны не полностью.

Python также нуждается в дополнительном тестировании в целях обнаружения багов и других ошибок.

Очень зависим от сторонних библиотек и фреймворков.

Веб-сервер

Backend-разработчик должен развернуть на компьютере веб-сервер, чтобы тестировать свой код. Организация локального сервера возможна в трёх вариантах.

1. Поставить «чистые» PHP, Apache и MySQL самостоятельно с нуля или применить готовые пакеты — Xampp, Denwer и другие.

Такая сборка работает в системе разработчика и воспринимается программным окружением как локальный сервер.

2. Воспользоваться Vagrant.

Это виртуальная машина с широкими возможностями. Физически Vagrant находится на компьютере, но воспринимается не как локальный сервер. Разработчик подключается к нему не по localhost, а по другому IP, который он сам и прописывает.

3. Использовать Docker.

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