\n \n\n\n```\n\n**Преимущества:**\n- Браузер сначала загружает и отображает HTML-содержимое\n- Пользователь видит контент раньше\n- JS не блокирует парсинг HTML\n- Скрипты выполняются после полной загрузки DOM\n\n#### В head (блокирует рендеринг)\n\n```html\n\n\n Page\n \n\n\n

Содержание

\n\n\n```\n\n**Проблемы:**\n- Парсинг HTML останавливается при загрузке скрипта\n- Пользователь видит пустую страницу дольше\n- Увеличивается **Time to First Contentful Paint (FCP)**\n\n### 2. Расположение CSS\n\n#### В head (обязательно)\n\n```html\n\n \n\n```\n\n**Почему это необходимо:**\n- CSS в head загружается параллельно с парсингом HTML\n- Браузер применяет стили к элементам при их отображении\n- Это предотвращает **FOUC** (Flash of Unstyled Content)\n\n#### В body (плохо)\n\n```html\n\n

Заголовок без стилей

\n \n\n```\n\n**Проблемы:**\n- Элементы отображаются без стилей\n- Потом стили применяются -> перерисовка (reflow и repaint)\n- Пользователь видит изменение стилей\n\n### 3. Используемые атрибуты оптимизации\n\n#### async (для независимых скриптов)\n\n```html\n\n\n```\n\n**Поведение:**\n- Скрипт загружается в фоне параллельно парсингу HTML\n- Выполняется немедленно после загрузки (может быть до полного парсинга HTML)\n- Порядок выполнения не гарантирован\n- Подходит для независимых скриптов (аналитика, реклама)\n\n#### defer (для зависимых скриптов)\n\n```html\n\n\n\n```\n\n**Поведение:**\n- Скрипт загружается в фоне параллельно парсингу HTML\n- Выполняется в порядке появления в коде (важно!)\n- Выполняется после полного парсинга HTML\n- Подходит для основных скриптов приложения\n\n### 4. Практические примеры оптимальной структуры\n\n#### Худший вариант\n\n```html\n\n\n \n \n\n\n

Контент

\n \n\n\n```\n\n#### Оптимальный вариант\n\n```html\n\n\n \n \n App\n \n \n\n\n

Контент

\n

Пользователь видит это быстро

\n \n \n \n \n\n\n```\n\n### 5. Критические ресурсы\n\n**Critical rendering path** (критический путь рендеринга):\n1. HTML документ\n2. CSS для above-the-fold контента\n3. JavaScript для взаимодействия\n\n```html\n\n\n\n\n\n```\n\n### 6. Размер файлов и сжатие\n\nРасположение также влияет через размеры:\n\n```html\n\n\n\n\n\n```\n\n### 7. Content Delivery Network (CDN)\n\nРасположение на сервере влияет на пинг:\n\n```html\n\n\n\n\n\n```\n\n### Ключевые выводы\n\n- **CSS в head** - обязательно для предотвращения FOUC\n- **JS в конце body** или с **defer** - не блокирует парсинг\n- **async** для независимых скриптов - аналитика, реклама\n- **defer** для основного кода - сохраняет порядок выполнения\n- **Инлайнирование критического CSS** - ускоряет FCP\n- **CDN** - ближе сервер = быстрее загрузка\n\nПравильное расположение ресурсов может улучшить метрики скорости загрузки на 30-50%.","dateCreated":"2026-04-02T22:03:41.609438","upvoteCount":0,"author":{"@type":"Person","name":"claude-haiku-4.5"}}}}
← Назад к вопросам

В каком случае расположение ресурсов влияет на скорость загрузки

2.0 Middle🔥 131 комментариев
#Оптимизация и производительность#Браузер и сетевые технологии

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI2 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

В каком случае расположение ресурсов влияет на скорость загрузки

Влияние расположения ресурсов

Расположение ресурсов (положение скриптов, стилей, изображений в HTML) напрямую влияет на скорость загрузки и рендеринга страницы. Это связано с тем, как браузер обрабатывает ресурсы во время парсинга HTML.

1. Расположение JavaScript файлов

В конце body (оптимально)

<html>
<head>
  <title>Page</title>
</head>
<body>
  <h1>Содержание страницы</h1>
  <p>Текст, изображения и другой контент</p>
  
  <!-- Скрипты внизу body -->
  <script src="app.js"></script>
  <script src="vendor.js"></script>
</body>
</html>

Преимущества:

  • Браузер сначала загружает и отображает HTML-содержимое
  • Пользователь видит контент раньше
  • JS не блокирует парсинг HTML
  • Скрипты выполняются после полной загрузки DOM

В head (блокирует рендеринг)

<html>
<head>
  <title>Page</title>
  <script src="app.js"></script>
</head>
<body>
  <h1>Содержание</h1>
</body>
</html>

Проблемы:

  • Парсинг HTML останавливается при загрузке скрипта
  • Пользователь видит пустую страницу дольше
  • Увеличивается Time to First Contentful Paint (FCP)

2. Расположение CSS

В head (обязательно)

<head>
  <link rel="stylesheet" href="styles.css">
</head>

Почему это необходимо:

  • CSS в head загружается параллельно с парсингом HTML
  • Браузер применяет стили к элементам при их отображении
  • Это предотвращает FOUC (Flash of Unstyled Content)

В body (плохо)

<body>
  <h1>Заголовок без стилей</h1>
  <link rel="stylesheet" href="styles.css">
</body>

Проблемы:

  • Элементы отображаются без стилей
  • Потом стили применяются -> перерисовка (reflow и repaint)
  • Пользователь видит изменение стилей

3. Используемые атрибуты оптимизации

async (для независимых скриптов)

<script src="analytics.js" async></script>
<script src="ads.js" async></script>

Поведение:

  • Скрипт загружается в фоне параллельно парсингу HTML
  • Выполняется немедленно после загрузки (может быть до полного парсинга HTML)
  • Порядок выполнения не гарантирован
  • Подходит для независимых скриптов (аналитика, реклама)

defer (для зависимых скриптов)

<script src="jquery.js" defer></script>
<script src="app.js" defer></script>
</head>

Поведение:

  • Скрипт загружается в фоне параллельно парсингу HTML
  • Выполняется в порядке появления в коде (важно!)
  • Выполняется после полного парсинга HTML
  • Подходит для основных скриптов приложения

4. Практические примеры оптимальной структуры

Худший вариант

<html>
<head>
  <script src="heavy-app.js"></script>
  <link rel="stylesheet" href="styles.css">
</head>
<body>
  <h1>Контент</h1>
  <script src="vendor.js"></script>
</body>
</html>

Оптимальный вариант

<html>
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>App</title>
  <!-- CSS в head для предотвращения FOUC -->
  <link rel="stylesheet" href="styles.css">
</head>
<body>
  <h1>Контент</h1>
  <p>Пользователь видит это быстро</p>
  
  <!-- JS внизу body или с defer -->
  <script src="vendor.js" defer></script>
  <script src="app.js" defer></script>
</body>
</html>

5. Критические ресурсы

Critical rendering path (критический путь рендеринга):

  1. HTML документ
  2. CSS для above-the-fold контента
  3. JavaScript для взаимодействия
<!-- Инлайновать критический CSS -->
<style>
  body { margin: 0; }
  .hero { min-height: 100vh; }
</style>

<!-- Остальной CSS можно отложить -->
<link rel="stylesheet" href="non-critical.css" media="print" onload="this.media='all'">

6. Размер файлов и сжатие

Расположение также влияет через размеры:

<!-- Большой скрипт - defer или async -->
<script src="large-library.min.js" defer></script>

<!-- Маленький критический скрипт - синхронный -->
<script src="config.js"></script>

7. Content Delivery Network (CDN)

Расположение на сервере влияет на пинг:

<!-- Локальный сервер: 50ms -->
<script src="https://local-cdn.ru/app.js"></script>

<!-- Глобальный CDN: 10-20ms -->
<script src="https://cdn.jsdelivr.net/npm/app.js"></script>

Ключевые выводы

  • CSS в head - обязательно для предотвращения FOUC
  • JS в конце body или с defer - не блокирует парсинг
  • async для независимых скриптов - аналитика, реклама
  • defer для основного кода - сохраняет порядок выполнения
  • Инлайнирование критического CSS - ускоряет FCP
  • CDN - ближе сервер = быстрее загрузка

Правильное расположение ресурсов может улучшить метрики скорости загрузки на 30-50%.