Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
linux_faq:dokuwiki_disable_jquery_for_guest_users [2020/06/15 09:15] – admin | linux_faq:dokuwiki_disable_jquery_for_guest_users [2021/06/02 09:47] (current) – [Jquery not loaded] admin | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== Задача ====== | ||
+ | Мне захотелось ускорить мою **DokuWiki**, | ||
+ | ====== Решение ====== | ||
+ | Библиотеки **JQuery** загружаются кодом из файлика **./ | ||
+ | < | ||
+ | // load jquery | ||
+ | $jquery = getCdnUrls(); | ||
+ | foreach($jquery as $src) { | ||
+ | $head[' | ||
+ | ' | ||
+ | ); | ||
+ | } | ||
+ | </ | ||
+ | Уровень привилегий пользователя можно определить с помощью функции **auth_quickaclcheck($ID)**, | ||
+ | < | ||
+ | define(' | ||
+ | define(' | ||
+ | define(' | ||
+ | define(' | ||
+ | define(' | ||
+ | define(' | ||
+ | </ | ||
+ | Соответственно, | ||
+ | < | ||
+ | if(auth_quickaclcheck($ID) > 1){ | ||
+ | // load jquery | ||
+ | $jquery = getCdnUrls(); | ||
+ | foreach($jquery as $src) { | ||
+ | $head[' | ||
+ | ' | ||
+ | ); | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | Теперь у незалогиненных пользователей мой сайтик грузится на ~**30%** быстрее. Без существенных потерь в функциональности и качестве отображения. | ||
+ | |||
+ | ===== Делаем загрузку js асинхронной ===== | ||
+ | Многие скирипты можно загружать ассинхронно, | ||
+ | ==== ./ | ||
+ | Функцию **loadScript** приводим к такому виду (вставляем слово **async** в строку **< | ||
+ | < | ||
+ | echo <<< | ||
+ | |||
+ | <script type=" | ||
+ | //< | ||
+ | function LoadScript( url ) | ||
+ | { | ||
+ | | ||
+ | |||
+ | } | ||
+ | | ||
+ | { | ||
+ | | ||
+ | |||
+ | } | ||
+ | //]]> </ | ||
+ | |||
+ | ==== ./ | ||
+ | В функции **_tpl_metaheaders_action**, | ||
+ | echo '>', | ||
+ | То есть функция будет выглядеть так: | ||
+ | |||
+ | < | ||
+ | foreach($data as $tag => $inst) { | ||
+ | if($tag == ' | ||
+ | echo "< | ||
+ | } | ||
+ | foreach($inst as $attr) { | ||
+ | if ( empty($attr) ) { continue; } | ||
+ | echo '<', | ||
+ | if(isset($attr[' | ||
+ | if($tag == ' | ||
+ | $attr[' | ||
+ | $attr[' | ||
+ | " | ||
+ | if(auth_quickaclcheck($ID) > 1){ | ||
+ | echo '>', | ||
+ | } else { | ||
+ | echo ' async>', | ||
+ | } | ||
+ | } else { | ||
+ | echo '/>'; | ||
+ | } | ||
+ | echo " | ||
+ | } | ||
+ | if($tag == ' | ||
+ | echo "< | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | Таким образом, | ||
+ | |||
+ | ====== bootstrap3 Template Optimization ====== | ||
+ | |||
+ | ===== Jquery not loaded ===== | ||
+ | После очередного обновления **DokuWiki** сломался темплейт **bootstrap3** - перестали работать выпадающие меню, а отладочная консоль браузера говорила, | ||
+ | Оказалось, | ||
+ | |||
+ | ===== Font Optimization ===== | ||
+ | https:// | ||
+ | В файлик **./ | ||
+ | font-display: |