Назад | Перейти на главную страницу

Nginx Pagespeed не объединяет и не сокращает JS или CSS

Я использую фильтры Mod_Pagespeed для Nginx, и объединение и минимизация javascipt или css не работают. Все проверил и не нашел причину:

1) В журнале ошибок нет ошибок

2) Pagespeed работает, потому что может collapse_whitespace, remove_comments и т.д..

3) Разрешение папки кеша кажется приемлемым с chown к www-data

4) Пробовал добавлять Domain и LoadFromFile чтобы увидеть, имеет ли это значение, но нет:

pagespeed Domain http://example.com;
pagespeed LoadFromFile "http://example.com/assets/"
                        "/var/www/example/public_html/assets";

5) В моем nginx установлена ​​блокировка аутентификации (см. Ниже). Когда я отключаю auth-lock, иногда кажется, что работает minify. Я не получил устойчивых результатов, чтобы прийти к такому выводу:

location / {
                        auth_basic "Login";
                        auth_basic_user_file /etc/nginx/login_pass;
}

Итак, мой вопрос: если включена аутентификация nginx, не приведет ли это к сбою страниц при минимизации и объединении JS или CSS? Или это могло быть у меня из-за чего-то другого? Я не знаю, куда смотреть дальше, и я так потерялся ...

Это мои фильтры Pagespeed:

# PageSpeed
# Enable ngx_pagespeed
pagespeed on;
pagespeed FileCachePath /usr/share/nginx/pagespeed;

# Ensure requests for pagespeed optimized resources go to the pagespeed handler
# and no extraneous headers get set.
location ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" {
  add_header "" "";
}
location ~ "^/ngx_pagespeed_static/" { }
location ~ "^/ngx_pagespeed_beacon$" { }
location /ngx_pagespeed_statistics { allow 127.0.0.1; deny all; }
location /ngx_pagespeed_global_statistics { allow 127.0.0.1; deny all; }
location /ngx_pagespeed_message { allow 127.0.0.1; deny all; }



pagespeed EnableFilters collapse_whitespace;
pagespeed EnableFilters remove_comments;

# Defer and minify Javascript
# pagespeed EnableFilters defer_javascript;
pagespeed EnableFilters rewrite_javascript;
pagespeed EnableFilters combine_javascript;
pagespeed EnableFilters canonicalize_javascript_libraries;

# Inline and minimize css
pagespeed EnableFilters rewrite_css;
pagespeed EnableFilters fallback_rewrite_css_urls;
pagespeed EnableFilters combine_css;

ОБНОВИТЬ: Похоже, что аутентификационная блокировка - это не то, что останавливает скорость страницы от объединения и минимизации. Я думаю, если какой-либо из включенных JS заставляет Pagespeed не минимизировать все файлы, если это возможно. Есть около 6 файлов CSS и 6 JS, которые нужно минимизировать и объединить. Все еще не уверен, почему, и изучаю это.

РЕШЕНИЕ: Оказывается, Pagespeed не смог найти мои статические ресурсы и, следовательно, не смог минимизировать и объединить CSS. Сопоставление статических активов сработало. Добавили мой ответ ниже.

Нашел! Как оказалось, Pagespeed не смог найти мои файлы css и js, поэтому они не были объединены и уменьшены. Вот почему только collapse_whitespace и remove_comments работал. Мне нужно отобразить местоположение моих статических ресурсов, а затем pagepeed смог его подобрать. Итак, я добавил это в свою конфигурацию Pagespeed, и после этого pagespeed заработал, как должен, и начал без проблем минимизировать и объединять файлы css и js:

pagespeed LoadFromFile "http://example.com/"
                        "/var/www/example/html/";

Чтение этой ссылки также помогло мне, хотя эта ссылка была для ssl, а моя - нет: https://www.erianna.com/how-to-setup-nginx-pagespeed-with-ssl

Подробнее об этом здесь: https://developers.google.com/speed/pagespeed/module/domains#ModPagespeedLoadFromFile

Можно изучить несколько настроек, которые предотвращают появление этих комбинаций. Первый также ответил оригинальным постером:

pagespeed LoadFromFile  remote_address  local_address;

Если вы используете CDN (просто убедитесь, что localhost обслуживает активы):

pagespeed MapOriginDomain  http://localhost  https://cdn.example.com;

Если вы используете WordPress:

pagespeed PermitIdsForCssCombining  *-css;

Хотя это может быть значение по умолчанию, укажите явно:

pagespeed EnableFilters       combine_css;
pagespeed EnableFilters       combine_javascript;
pagespeed CombineAcrossPaths  on;

Для рабочих настроек в настройке с NGINX, WordPress и CloudFlare вы можете проверить эту веб-страницу: https://www.majlovesreg.one/adding-pagespeed-to-a-running-nginx-instance