linux_faq:dokuwiki_disable_jquery_for_guest_users

Задача

Мне захотелось ускорить мою DokuWiki, чтобы она быстрее открывалась. Один из способов сделать это - отключить загрузку некритичных библиотек и скриптов. В частности - JQuery. Я буду отключать загрузку JQuery для незалогиненных пользователей (гостей), которые имеют права только на чтение статей.

Решение

Библиотеки JQuery загружаются кодом из файлика ./inc/template.php:

// load jquery
$jquery = getCdnUrls();
foreach($jquery as $src) {
    $head['script'][] = array(
        'type' => 'text/javascript', 'charset' => 'utf-8', '_data' => '', 'src' => $src
    );
}

Уровень привилегий пользователя можно определить с помощью функции auth_quickaclcheck($ID), которая возвращает число от 1 до 255. Гости с правом чтения имеют значение уровня привилегий 1. Вот кусочек из inc/auth.php:

define('AUTH_NONE', 0);
define('AUTH_READ', 1);
define('AUTH_EDIT', 2);
define('AUTH_CREATE', 4);
define('AUTH_UPLOAD', 8);
define('AUTH_DELETE', 16);
define('AUTH_ADMIN', 255);

Соответственно, для достижения желаемого нам надо обернуть код загрузки JQuery в условие, которое проверит уровень привилегий пользователя:

if(auth_quickaclcheck($ID) > 1){
    // load jquery
    $jquery = getCdnUrls();
    foreach($jquery as $src) {
        $head['script'][] = array(
            'type' => 'text/javascript', 'charset' => 'utf-8', '_data' => '', 'src' => $src
        );
    }
}

Теперь у незалогиненных пользователей мой сайтик грузится на ~30% быстрее. Без существенных потерь в функциональности и качестве отображения.

Enter your comment. Wiki syntax is allowed:
T​ K​ L S W
 
  • linux_faq/dokuwiki_disable_jquery_for_guest_users.txt
  • Last modified: 2019/02/11 09:13
  • (external edit)