Javascript.RU

Отрицание в регулярном выражении

Как и обещал во время перерыва на мастер классах выкладываю решение:

Когда то, кажется после прочтения книги о клиентской оптимизации Николая Мациевского, у меня появилась задача: для устаревших браузеров, не поддерживающих gzip, создать в конфигурационном файле apache сервера правило:

все .css .js файлы, не имеющие в названии определенной части .ABC дополняются этим .ABC

Долго мучился в поисках решения, вспоминая при этом анекдот:

если у вас есть проблема и вы думаете, что ее можно решить через регулярные выражения, значит у вас уже есть две проблемы!

Собственно сам regexp:

((?:(?!\.ABC).)*)

Я его на практике использую так вот:

    RewriteEngine On
# ... тут правило по вырезанию версии файла
    RewriteCond %{HTTP:Accept-encoding} !gzip [OR]
    RewriteCond %{HTTP_USER_AGENT} Konqueror
    RewriteRule ^((?:(?!\.no-gzip).)*)\.(css|js)$ $1.no-gzip.$2 [QSA,L]

# далее ...

    FilesMatch .*\.(js|css)$
        Header set Content-Encoding: gzip
        Header set Cache-control: private
    /FilesMatch

    FilesMatch .*\.no-gzip\.(js|css)$>
        Header unset Content-Encoding
    /FilesMatch

При этом отдельные .css .js файлы для IE 6-, подключаемые через CC, либо файлы очень маленького объема, сжимать которые не выгодно и не эффективно, изначально содержат в названии флаг .no-gzip

Надеюсь вам это пригодится!

P.S. Илья, еще раз спасибо за организацию и проведение мастер классов, ни разу не пожалел, всем советую!

+2

 
Поиск по сайту
Другие записи этого автора
Больше записей нет. Прокомментируйте эту запись - может быть, тогда он что-нибудь еще хорошее напишет ;)
Содержание

Учебник javascript

Основные элементы языка

Сундучок с инструментами

Интерфейсы

Все об AJAX

Оптимизация

Разное

Дерево всех статей

Популярные таги
Последние темы на форуме
Forum