При включённой агрегации, все стили объединяются в один большой css файл с уникальным именем. При изменении хоть одного файла и сбрасывании кэша, папка со стилями очищается и файл создаётся по новой, но уже с другим именем. Поэтому пользователи, просматривающие сайт из кэша гугла, стили которого были изменены, могут наблюдать такую картинку:
А системный журнал при этом будет пополняться сообщениями вида:
Для решения проблемы, нужно в папке темы создать новый файл all.css, в котором подключить все стили используемые на страницах, примерно так:
@import url(/modules/node/node.css);
@import url(/modules/system/defaults.css);
@import url(/modules/system/system.css);
@import url(/modules/user/user.css);
@import url(/modules/taxonomy/taxonomy.css);
@import url(/sites/all/themes/themename/css/reset.css);
@import url(/sites/all/themes/themename/css/style.css);
@import url(/sites/default/files/geshifilter-languages.css);
@import url(/sites/all/modules/geshifilter/geshifilter.css);
И в .htaccess, перед
# Rewrite URLs of the form 'x' to the form 'index.php?q=x'.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
добавить:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^sites/default/files/css/css_[a-z0-9]{32}\.css$ sites/all/themes/themename/all.css [L]
Результат:
Написанное актуально для
Drupal 6.x
Комментарии
Спасибо, Работает!
А по аналогии можно и с жаба-скриптами поступить?
P.S. У вас полезный для человечества ресурс :)
разумеется)
По какому принципу это работает?
Если нет сжатого файла css, то посетителю передается файл sites/all/themes/themename/css/all.css?
Тогда почему у вас имя сжатого файла одинаково на этой странице и в кеше?
У меня генерируются имена сжатых файлов все время разные (после чистки кеша) и поэтому этот метод не работает...
да
потому что после последнего посещения паука, css файлы небыли пересобраны
этот метод как раз для этого и нужен, и он прекрасно работает
Спасибо, у меня оказывается редирект не работал.
Поставил конструкцию в начало файла и заработало.
Интересная тема, но метод не совсем правильный.
Если я не ошибаюсь, то при кэшировании ксс не просто собираются в один файл, но и из них убираются всякий мусор (лишние отступы, повторяющие стили, комменты).
включённый gzip эффективней любых оптимизаций файлов
Скажите, пожалуйста, по каким причинам может не работать редирект? Где хотя бы искать?
Уже по всякому эту конструкцию в htaccess ставил. И до, и после, и в начале, по всякому...
Не хочет на all.css редиректить и всё тут. Хотя, вроде всё просто и понятно..
редиректить и не должно. должно по адресу
sites/default/files/css/css_[a-z0-9]{32}\.css
открываться файлsites/all/themes/themename/css/all.css
. может имя темы забыли прописать, или опечаталисьНет, опечатки точно нет, сто раз проверил. Да и суть того, что должно произойти я, в общем, понимаю. Просто глубины htaccess мне не подвластны. Мне кажется, у меня в htaccess что-то включено не то, а я не понимаю, что. У меня там редирект стоит с "без www" на "с www", ещё какие-то штуки. Вот я и думаю... Ну, видать, надобно разбираться всё-таки в этом htaccesse.
А за пост, спасибо, очень вовремя. Ну и вообще, сайт ваш чоткий.
откройте в браузере адрес example.com/sites/all/themes/themename/css/all.css и посмотрите результат
в статье была небольшая ошибка, файл предлагалось создать в папке темы, а в .htaccess был указан путь к вложенной папке css
example.com/sites/all/themes/themename/css/all.css - всё нормуль, видит файл. Насчёт ошибки в статье, это я понял и учёл. Суть-то данного метода мне ясна. Именно htaccess, зараза, не переключает. Или вот может на хостинге что-нибудь.. Хотя, опять же, другие редиректы работают. Да и правило ваше, простецкое вроде. Прочитал про него на htaccess.net.ru, никаких подвохов не вижу...
Сейчас временно css расклеил. Хочу всё же кэш увидеть, да и есть у меня подозрение, что на SEO-шные дела это влияет. Короче говоря, буду решать всё равно. Как решу - отпишусь.
Все. Недавно вышедший модуль http://drupal.org/project/advagg решил все проблемы. И с кэшем поисковиков и с оптимизацией / зжатием ксс, js.
Это новый грааль оптимизатора!))
А я обещал доковырять и доложить о результатах и забросил. А надо..
Кэш в поисковики вернулся после расклейки.
Поставил я AdvAgg. Вроде всё чётко. Жду реакции поисковиков.
скажите пожалуйста, влияет ли на позиции при выдаче в поисковике если кеш сайта в поиковике выглядит каряво, без стилей css я так понял,
и услышать отзывы о advagg очень было бы полезно(я так понял с его помошью можно решить эту проблему ничего не правя ни в каких кодах)
он нужен только при агрессивном кешировании или и при нормальном режиме?
всем спасибо
не влияет
Андрей (#comment-1805) большое спасибо!!!
Это решило проблему сжатия на мультисайтинге!
а как по мне пофигу что поисковики видят каждый раз разный css
хотя вот сам попал в эту статью потому что варнинги в админке красуются :)
имхо проще указать путь к родному /sites/all/themes/mytheme/style.css
нафиг там еще системные указывать и прочие др модулей
сделал тупо
#css файл, после очистки кеша
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^media/css/css_[a-z0-9]{32}\.css$ themes/my/style.css [L]
Добавить комментарий