Разве CSS-in-JS не мешает браузеру кэшировать CSS?

Я ищу лучшие практики для стилизации приложения React с рендерингом на стороне сервера.

Я вижу разные варианты, такие как использование препроцессоров, таких как SASS, или размещение стилей внутри кода JS, таких как JSS, стилизованные компоненты и т. д.

Играя с JSS, я вижу, что он помещает стили в раздел заголовка внутри HTML. Я просто использую следующий пример, чтобы увидеть поведение:

https://github.com/cssinjs/examples/tree/gh-pages/реагировать-ssr

Разве это не помешает браузерам кэшировать CSS, чтобы поместить его в раздел заголовка и, следовательно, увеличить время последовательной загрузки страницы? Есть ли способ поместить стиль во внешний файл с помощью JSS, чтобы браузер мог его кэшировать?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
691
1

Ответы 1

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

Критический CSS — это реальная оптимизация производительности.

Я понимаю, что лучше загружать HTML с требуемым CSS для этой страницы внутри раздела заголовка, а не ждать блокирующей загрузки CSS. Это достаточно справедливо. Меня беспокоит следующая загрузка страниц. Предполагая, что у нас есть большие данные о стилях для страницы, каждый раз, когда мы обновляем страницу, нам придется загружать один и тот же большой пакет HTML+CSS, в то время как мы можем использовать кэширование браузера.

moztemur 22.01.2019 11:08

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

Oleg Isonen 22.01.2019 11:11

Вот почему CSSinJS имеет большое значение, потому что он знает, какой CSS на самом деле используется.

Oleg Isonen 22.01.2019 11:12

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

Oleg Isonen 23.01.2019 12:07

Спасибо @Oleg, если бы я использовал один блокирующий файл CSS для всего приложения React SSR, загрузка страницы заняла бы немного времени, и пользователь какое-то время видел бы пустую страницу. После этого каждая перезагрузка страницы будет выполняться быстрее, если не будет очищен кеш браузера. С другой стороны, если бы я использовал CSSinJS, он загрузил бы только необходимый CSS внутри раздела заголовка, что быстрее, чем загрузка всего CSS, но то же самое было бы для перезагрузки страницы. Как вы сказали, это похоже на компромисс с точки зрения скорости загрузки страницы.

moztemur 24.01.2019 15:20

Да, это окупается, когда у вас есть SPA или относительно небольшая полезная нагрузка критически важного CSS.

Oleg Isonen 25.01.2019 16:03

Другие вопросы по теме