2016-03-05 5 views
0

Google PageSpeed ​​Insights предлагает, чтобы удалить оказывать блокирующее CSS:Загрузка начальной загрузки CSS после загрузки страницы

https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css 

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

Это много работы, но выполнимо (я полагаю).

Однако при связывании загрузочного буфера после загрузки страницы все встроенные переопределения в правила начальной загрузки теряются.

Любые идеи будут оценены.

Дэвид

+4

Возможно, вам понадобится пользовательская загрузка: http://getbootstrap.com/customize/. Вы можете выбрать, какие функции вам нужны, и отключить другие. – AMACB

+2

Использование полного файла css над установленным cdn является гораздо лучшим решением, поскольку очень вероятно, что пользователь уже имеет этот файл на своем компьютере (кеше). Индивидуальная версия бутстрапа означает, что пользователь должен будет загрузить его (не обязательно). Кроме того, даже настройка бутстрапа дает файл, который слишком велик, чтобы включать его как встроенный css и, следовательно, не решает проблему (блокирование вывода) – Cymro

ответ

-1

Старайтесь избегать использования КДС для Bootstrap и JS, если вы нуждаетесь в производительности. В вашем случае получите копию bootstrap getbootstrap.com/getting-started/ и интегрируйте ее в свои каталоги css.

+1

http://www.w3schools.com/bootstrap/bootstrap_get_started.asp «Многие пользователи уже загрузили Bootstrap из MaxCDN при посещении другого сайта, в результате он будет загружен из кеша при посещении вашего сайта, что приведет к более быстрому времени загрузки. Кроме того, большинство CDN будут следить за тем, чтобы пользователь запрашивал файл из он будет обслуживаться с ближайшего к ним сервера, что также приведет к более быстрому времени загрузки ». – Cymro

+0

@ Cymro правильно. Добавляя к тому, что уже было сказано, использование CDN также означает, что ваш сервер будет экономить полосу пропускания. Bootstrap добавляет значительную сумму для загрузки - свои собственные CSS, шрифты, js и jQuery в качестве зависимости. Все это составляет более 200 КБ (~ 60 КБ gzipped). Вы можете сэкономить на этой передаче за посещение, благодаря CDNs – zhirzh

1

В конце концов я нашел решение, которое хочу поделиться, если кому-то это понадобится.

Во-первых, я загрузил настроенную сборку bootstrap css в качестве предлагаемого выше AmacB. Я скопировал css в excel, причем каждое правило имело 1 строку. В следующей колонке я поставил х у каждого правила и в 3-й колонке, я написал формулу, чтобы показать правило, если там был х и не показывать правило, если не было х. Затем я скопировал 3-й столбец и загрузил его на свой сайт в виде файла css.

Это сработало, конечно, но Css было 32kbytes. Слишком много для inline.

Итак, я начал изучать каждое правило, чтобы решить, нужно ли мне это для содержимого складки. Где я чувствовал, что правило не требуется, я удалил x, сохранил третий столбец, загрузил и проверил, как он работает. Этот процесс занял несколько часов, но, в конце концов, я получил css только для тех правил, которые мне нужны для выше. В полученном файле было около 80 правил.

Затем в моем файле PHP, в заголовке страницы я добавил:

$TheCSS=file_get_contents('/css/bootstrap-reduced.css'); 
echo '<style>'.$TheCSS.'</style>'; 

Мой счет на PageSpeed ​​Insights теперь 99/100.

Решение добавляет 4kb на каждую страницу, которая является продуктивной. Итак ... После загрузки страницы в jquery я делаю ссылку на загрузочный диск cdn и на загрузку следующей страницы, я использую эту ссылку вместо вставки встроенного css.

писал VBA код для упрощения процесса:

Sub SaveAsTextFile() 
TheFileName = "bootstrap-atf.css" 
ThePath = "C:\Users\MyFolder\" 
Sheets("Sheet1").Columns("C").Select 
Selection.Copy 
Sheets.Add.Name = "Temp" 
Sheets("Temp").Select 
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False 
Sheets("Temp").Columns("A").Select 
LastRow = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row 

Set Rng = Selection 
Open ThePath & TheFileName For Output As #1 
For i = 1 To LastRow 
cellValue = Rng.Cells(i, 1).Value 
If cellValue <> "" Then Print #1, cellValue 
Next i 
Close #1 
ActiveWindow.SelectedSheets.Delete 
End Sub 

Поставьте галочку рядом с кучей правил в листе Excel, нажмите кнопку «Сохранить CSS» (вы можете добавить кнопку в Excel лист), и правила сохраняются как файл css, называемый bootstrap-atf.css (atf = выше складки)

Очень упрощает процесс проб и ошибок.

2

Я бы загрузить самозагрузки с CDN с помощью JS после содержимого страницы, а затем использовать этот интерактивный инструмент для извлечения критического пути CSS: https://jonassebastianohlsson.com/criticalpathcssgenerator/ (или вы можете использовать один и тот же инструмент локально с узлом или PhantomJS: https://github.com/pocketjoso/penthouse)

Исключенный CSS будет сведен к минимуму и помещен в ваш заголовок.

Смежные вопросы