User Tools

Site Tools


Sidebar

Me
Здравствуйте!

Меня зовут Михаил Усик!
Я системный администратор
и наполняю эту wiki,
решая разнообразные IT-задачки.

Я всегда готов помочь Вам
наладить IT-инфраструктуру
за скромное вознаграждение!

mike@autosys.tk
+7 (977) 887-96-23

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% быстрее. Без существенных потерь в функциональности и качестве отображения.

Discussion

Enter your comment. Wiki syntax is allowed:
Y᠎ K P A​ S
 
linux_faq/dokuwiki_disable_jquery_for_guest_users.txt · Last modified: 2019/02/11 09:13 (external edit)