За последние 24 часа нас посетили 18264 программиста и 1634 робота. Сейчас ищут 1744 программиста ...

Апач. Упаковка JS скриптов и CSS файлов

Тема в разделе "Установка PHP", создана пользователем ShamahN, 24 июн 2010.

  1. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    Подрядился по изменять проектик. Скинул себе копию (как полагается). Еле завел, но соль не в этом
    Там, на сколько я понял, стили и js скрипты подаются упакованные (для бровзеров, которые могут их распаковать). Почитал, полазил по инету, гружу все модули какие нашел. Но чет никак. Вот директивы .htaccess которые этим занимаются
    Код (Text):
    1.  
    2. <FilesMatch "\.js.gz$">
    3.   ForceType text/javascript  
    4.   Header set Content-Encoding: gzip
    5. </FilesMatch>
    6. <FilesMatch "\.js$">
    7.   RewriteEngine On
    8.   RewriteCond %{HTTP_USER_AGENT} !".*Safari.*"
    9.   RewriteCond %{HTTP:Accept-Encoding} gzip
    10.   RewriteCond %{REQUEST_FILENAME}.gz -f
    11. [b]  #RewriteRule (.*)\.js$ $1\.js.gz [L][/b]
    12.   ForceType text/javascript
    13. </FilesMatch>
    14.  
    15.  
    16. <FilesMatch "\.css.gz$">
    17.   ForceType text/css
    18.   Header set Content-Encoding: gzip
    19. </FilesMatch>
    20. <FilesMatch "\.css$">
    21.   RewriteEngine On
    22.   RewriteCond %{HTTP_USER_AGENT} !".*Safari.*"
    23.   RewriteCond %{HTTP:Accept-Encoding} gzip
    24.   RewriteCond %{REQUEST_FILENAME}.gz -f
    25. [b]  #RewriteRule (.*)\.css$ $1\.css.gz [L][/b]
    26.   ForceType text/css
    27. </FilesMatch>
    А именно, выделенные мной строчки. Если кто знает, подскажите что еще надо в конфе апача подправить, чтобы все взлетело как есть)
     
  2. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    незнай насчет апача я когда nginx настраивал там можно было дополнять список файлов которые сжимаются (text\html по умолчанию) или тут другое?
     
  3. А в каком месте у тебя "не взлетает" то?
     
  4. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    Padaboo, может быть и то =)
    флоппик
    Если раскоментировать в .htaccess строчки

    RewriteRule (.*)\.css$ $1\.css.gz [L]
    и
    RewriteRule (.*)\.js$ $1\.js.gz [L]

    то запросы типа
    http://xxxx/css/style.css или http://xxxx/js/main.js

    Вызывают у апача 400 ошибку
    Bad Request

    Видимо, у меня апачу не хватает каких-то модулей или настроек
     
  5. Гадать не надо. Надо логи читать.
     
  6. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    Код (Text):
    1. 127.0.0.1 - - [24/Jun/2010:21:58:59 +0400] "GET /css/style.css HTTP/1.1" 400 305
    2. 127.0.0.1 - - [24/Jun/2010:21:58:59 +0400] "GET /js/functions.js HTTP/1.1" 400 305
    Апач не понимает запроса, когда у него просят, то что, благодаря .htaccess должен отдать упакованным.. гадать нечего)
     
  7. Не те логи. С ошибками, а не с запросами.
     
  8. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    Код (Text):
    1. [Fri Jun 25 00:41:12 2010] [error] an unknown filter was not added: DEFLATE
    Раскоментировал
    Код (Text):
    1. LoadModule deflate_module modules/mod_deflate.so
    Ошибок в логе больше не появляется, но ситуация не изменилась(
     
  9. Уверен? Не уверен - почисти лог в 0, рестартни апач, и запроси нужную шнягу. И обратно в лог.
     
  10. А ничо, что у тебя строки о которых ты говоришь - закомменчены?
     
  11. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    Код (Text):
    1. [Fri Jun 25 00:56:22 2010] [notice] Apache/2.2.14 (Win32) PHP/5.3.2 configured -- resuming normal operations
    2. [Fri Jun 25 00:56:22 2010] [notice] Server built: Sep 28 2009 22:41:08
    3. [Fri Jun 25 00:56:22 2010] [notice] Parent: Created child process 1492
    4. [Fri Jun 25 00:56:23 2010] [notice] Child 1492: Child process is running
    5. [Fri Jun 25 00:56:23 2010] [notice] Child 1492: Acquired the start mutex.
    6. [Fri Jun 25 00:56:23 2010] [notice] Child 1492: Starting 64 worker threads.
    7. [Fri Jun 25 00:56:23 2010] [notice] Child 1492: Starting thread to listen on port 80.
    Весь лог который получается.
    Они закоменчены, потому, что без них оно работает)
    Если раскоментировать, http://xxx/css/style.css вываливается в
    Bad Request
    Your browser sent a request that this server could not understand.
     
  12. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    Код (Text):
    1. ErrorLog "logs/error.log"
    2. LogLevel warn
    флоппик, попробуйте куда-нить себе в .htaccess вставить строчки
    Код (Text):
    1.  
    2. RewriteEngine On
    3. # compress all text & html:
    4. AddOutputFilterByType DEFLATE text/html text/plain text/xml
    5.  
    6. # Or, compress certain file types by extension:
    7. <Files *.html>
    8. SetOutputFilter DEFLATE
    9. </Files>
    10. AddEncoding gzip .gz
    11. <FilesMatch "\.css.gz$">
    12.   ForceType text/css
    13.   Header set Content-Encoding: gzip
    14. </FilesMatch>
    15. <FilesMatch "\.css$">
    16.   RewriteEngine On
    17.   RewriteCond %{HTTP_USER_AGENT} !".*Safari.*"
    18.   RewriteCond %{HTTP:Accept-Encoding} gzip
    19.   RewriteCond %{REQUEST_FILENAME}.gz -f
    20.   RewriteRule (.*)\.css$ $1\.css.gz [L]
    21.   ForceType text/css
    22. </FilesMatch>
    и дернуть *.css, думаю, увидите тоже самое)
    (естественно, рядом с основным css файлом, надо положить *.css.gz
     
  13. у меня нет апача.
     
  14. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    плохо (=

    вопрос остается открытым(
     
  15. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    Код (Text):
    1. AddEncoding gzip .gz
    2.  
    3. <FilesMatch .*\.css.gz$>
    4.   ForceType text/css
    5.   Header set Content-Encoding: gzip
    6. </FilesMatch>
    7.  
    8. RewriteEngine On
    9. RewriteCond %{HTTP:Accept-encoding} gzip
    10. RewriteCond %{HTTP_USER_AGENT} !Safari
    11. RewriteCond %{HTTP_USER_AGENT} !Konqueror
    12. RewriteRule ^(.*)\.css$ $1\.css\.gz [NC,L]
    это сделать хотел?
     
  16. phpdude

    phpdude Активный пользователь

    С нами с:
    9 июл 2010
    Сообщения:
    697
    Симпатии:
    0
  17. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    Luge Да. Это прописано, но апач не выдает что надо. Т.е. когда запрашиваешь скрипт или стиль, который есть упакованный (.gz) вываливается 400 ошибка, типа апач не понял
    phpdude, спасибо. На досуге почитаю
     
  18. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    ты хочешь прописывать в html style.css.gz и отдавать его как text/css или style.css и отдавать вместо него style.css.gz? Определись
     
  19. phpdude

    phpdude Активный пользователь

    С нами с:
    9 июл 2010
    Сообщения:
    697
    Симпатии:
    0
  20. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    Luge, оно вообще как работает (по крайней мере в моем случае). Запрос делается нормальный, типа файл.css, но хтакцессом навешано правило, если есть файл с именем файл.css.gz - апач отдает его.
    Вот мне это и надо реализовать. Сейчас у меня все работает, т.к. я поубивал *.gz. Но если их сделать, то апач, естественно ломанется их отдавать, но чет у него не получается и он выдает 400
     
  21. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    хм, или я не помню, или rewrite в FilesMatch и Files как бы не работают… Посмотреть нуна
    А вообще в моём посте как раз
    надо только проверить ещё, что gz есть
     
  22. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    Luge, если есть апач, и если не сложно, - могу прислать .htaccess. Он весит на работающем сайте. С какими костылями там серв поднят - одному богу известно, но оно там работает. Хотелось бы повторить )