Список вопросов
Как зайти в Даркнет?!
25th January, 01:11
5
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
893
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
948
0
Очень долго работает Update запрос Oracle
27th January, 09:58
912
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
905
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
938
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1724
0
период по дням
25th October, 10:44
3955
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3720
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4613
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4380
0
Помогите пожалуйста решить задачи
24th November, 23:53
6084
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4350
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4395
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
Как выдавать CSS стили пользователю?
Просмотров: 309
 
Ответов: 11
Здравствуйте.
У меня большой проект.
Что лучше, сделать 20 CSS файлов которые будут грузится ТОЛЬКО там где надо или же 1 большой CSS который будет грузится везде
Для разработки разделить файлы по сущностям, например: один шаблон — один css файл (вы же используете наследование шаблонов, декораторы, слоты, блоки и т. п.? :) ) с максимальным использованием каскадности. Получим, что каждая страница будет запрашивать 1-N css файлов (у меня обычно 6-7 получается, 1 — общий шаблон для всех страниц, 1 — основной контент, 4-5 — меню и прочие блоки в сайдбарах). Можно пойти ещё дальше, разделяя css отдельных сущностей на css позиционирования/размеров, цвета и прочего декора, но имхо, излишне
Для продакшена для каждого реально встретившегося сочетания css генерируем свой один большой css (обычно получается штук 10, незначительно различающихся) и вызываем его для соответствующих страниц (можно ручками, можно средствами движка «на лету» и с кэшированием, можно утилитами) — в общем склейка. Дополнительно его можно обфусцировать и сжать.
Получаем, что для каждой страницы вызывается один css, в котором есть всё, что для неё нужно и нет ничего лишнего.
Плюсы по сравнению с крайностями (единый файл для всех страниц или 6-7 разных файлов для каждой страницы):
— простота разработки (субъективно, кому-то проще в одном файле лазить)
— один вызов css на странице, а значит только одно обращение к серверу (и то, если пользователь не случайный, кэшируется после первого обращения)
— минимальный размер css для каждой отдельно взятой страницы
— минимальное время парсинга файла браузером (а значит и время рендеринга страницы)
Минусы:
— сложность поддержки, если это дело прозрачно не автоматизировано
— для не случайных посетителей совокупный объём трафика будет большим, чем в обоих крайних случаях
— аналогично будет большим и кэш
Плюсы единого файла:
— минимальный совокупный объём трафика и кэша для не случайного посетителя
— один запрос на страницу, кэшируемый для всех страниц сайта
Минусы:
— сложность разработки (субъективно)
— избыточный объём трафика и кэша для случайных посетителей
— большее время парсинга для всех страниц (за редким исключение страниц, которым нужны все css правила проекта)
Плюсы кучи мелких файлов:
— простота разработки (субъективно)
— близкий к минимальному объём трафика и кэша для случайных посетителей, минимальный для не случайных
Минусы:
— много запросов к серверу
— незначительно большее время парсинга по сравнению со «склейкой»
Аналогично можно поступать и с JS
P.S. Предварительная оптимизация зло
P.P.S. Если используете условные «переходы» для IE, то можно или генерировать для него свой большой файл (тогда различий не будет в плюсах/минусах не будет), или вынести все используемые хаки в один файл и подключать его «статически» (тогда у пользователей IE будет два запроса на страницу, один из которых будет иметь плюсы и минусы «динамического» подключения, а второй не будет), или генерировать второй файл аналогично первому (обычно избыточно) — я предпочитаю второй вариант — «динамически» генерируемый общий CSS, и «статический» файл с хаками IE
P.P.S. Предварительная оптимизация зло.
возможно я и не прав, но:
Если мы имеем один большой css — то это не удобно с точки зрения верстальщика. куда приятней когда /css/_module/news/layout.css для примера
Пользователю без разницы.
Сервер, однажды отдав css'у, на следущие запросы будет отдавать заголовок not-modified — нагрузка будет один раз.
Мое мнение — много css'ок допустимо. Особенно когда есть ни какой нибудь сайт-визитка, где стилей кот наплакал, а портал с кучей модулей.
1 большой файл в котором есть все нужные стили на часто используемых страницах.
То есть который покроет 70-80% всех запросов.
Остальные бьете на «пакаджы», на разделы и так далее. И тоже клеите относительно большими «выпухлыми» группами.
Если большие группы не получаются — не клеите, а сливаете все в один файл.
И париться с этим надо только если с остальным париться уже не надо
Зависит от конкретного сайта. Например, если сайт содержит разношёрстные статьи и большинство посетителей приходит из поисковиков и в среднем просматривает по одной странице, то быстрее будет грузить только те стили, которые реально используются именно на текущей странице. В противном случае может иметь смысл автоматизированно объединять все стили в одну таблицу и упаковывать её в gzip.
смысл css вообще в том, чтобы всё объединять и править из одного места :)
в наше время, имхо, правильнее будет оптимизировать графику для увеличения скорости, а не уменьшать вес файликов со стилями.
К тому же лучше одно обращение к серверу, чем 20. Да и в одном файле куда проще разобраться, чем в 20и.
Лучше воспользоваться склейкой. То есть у вас есть несколько css файлов, каждый из них отвечает за стилистику отдельных блоков. вставляйте их с помощью connectcss.php/?css=layout,topnews,blog,news,menu
vremenno.net/misc/organization-optimization-and-cache-for-css-js-files/ — вот ссылка, тут подробнее
Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться