За последние 24 часа нас посетили 26737 программистов и 1819 роботов. Сейчас ищут 918 программистов ...

Упаковщик JS

Тема в разделе "Прочее", создана пользователем Антошка, 25 июл 2010.

  1. Антошка

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

    С нами с:
    7 мар 2010
    Сообщения:
    62
    Симпатии:
    0
    По мере написанния всякой фиговины, сделал такую вот штуку, котороая при вызове любого *.js файла упаковывает его JavaScriptPacker.
    PHP:
    1.  
    2. <?php
    3. $wait_ar = array('bbcode.lib.js');
    4. header("Content-type: text/javascript; charset=utf-8");
    5. $src = preg_replace("{[^A-Za-z0-9_./?]}","",$_SERVER['REQUEST_URI']);
    6. $q=substr(strrchr($src, '?'), 1);
    7. if ($q!='')
    8. $src=preg_replace("[\?$q]","",$src);
    9. $ext=substr(strrchr($src, '.'), 1);
    10. $filename=substr(strrchr($src, '/'), 1);
    11. if(in_array($filename,$wait_ar))
    12. {
    13.     echo file_get_contents($src);
    14.     exit;
    15. }
    16. $out = hash_file('sha256',$src).'.js';
    17. $out = preg_replace("[ ]","_",$out);
    18. $out = 'tmp/'.preg_replace("{[^A-Za-z0-9_.]}","",$out);
    19. if ((file_exists($src))&&($ext=='js')) {
    20. if (!file_exists($out))
    21. {
    22. include('class.JavaScriptPacker.php');
    23. $script = file_get_contents($src);
    24. $packer = new JavaScriptPacker($script, 'None', true, false);
    25. $packed = $packer->pack();
    26. file_put_contents($out, $packed);
    27. }
    28. echo file_get_contents($out);
    29. } else
    30. header("HTTP/1.1 404 Not Found", true, 404);
    31. ?>
    32.  
    Содержимое .htaccess
    Код (Text):
    1. RewriteEngine on
    2. RewriteRule (.js)$ js.php#$1 [L]
     
  2. Padaboo

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

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
  3. Антошка

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

    С нами с:
    7 мар 2010
    Сообщения:
    62
    Симпатии:
    0
    На главной странице там логин и пасс к админке есть)
    Padaboo
    На другом сайте поправил, а здесь забыл((( Уже пофиксил)
    Да неплохая штуковина. . Мне что попроще охота, мой вариант очень просто встраивается, и не надо никакой код трогать.
     
  4. Koc

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

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    хуйня это все.

    1) Статику нужно отдавать статически. А вы прогоняете ее через пыхокод. Оно вам надо? Делайте кеширование, начилие-отсутствие кеша проверяйте mod_rewrite
    2) К чертям эту минимизацию. Размер не сильно меньше будет а вот вероятность того, что код скрипта будет испорчен есть. Гзипьте данные, это куда проще
     
  5. Антошка

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

    С нами с:
    7 мар 2010
    Сообщения:
    62
    Симпатии:
    0
    Koc
    пойду смотреть как проверять кэш mod_rewrite, такая минимизация от воровства иногда спасает. щас идея сделать проверку файла через mod_rewrite и направлять на статику напрямую. Проверял на целостность, поэтому тим сжатия сделал None, в других вариантах скрипты некоторые действительно ломаются.
     
  6. Koc

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

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    кому нужны чужие поделки?

    ну так это то, что я в 1) написал
     
  7. Антошка

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

    С нами с:
    7 мар 2010
    Сообщения:
    62
    Симпатии:
    0
    Koc
    ну вот я знаю некоторых кто мою галерею хотят зажирить, усложню задачу)
    я имею ввиду статику уже обработанную в пхп.
     
  8. phpdude

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

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

    dude frontend многое умеет, там даже есть описалово как нгинкс настроить под кеширование генерируемой им статики ;)
    и даже через mod_gzip_static :)
     
  9. Koc

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

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    кроме того есть бьютифиеры, которые приведут в более-менее читаемый вид этот "упакованный" файл

    не смеши меня. Кто? школоло из соседней общаги?
     
  10. Антошка

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

    С нами с:
    7 мар 2010
    Сообщения:
    62
    Симпатии:
    0
    Koc
    примерно да)
     
  11. 440Hz

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

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    ну и подари им ее. че жмотиться-то?
     
  12. Антошка

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

    С нами с:
    7 мар 2010
    Сообщения:
    62
    Симпатии:
    0
    440Hz
    Да вроде не просят, попросят - дам, а вот втихую тырить не дам)

    Господа почему вы не сказали что crc32 никакой контрольной суммы не выдаёт???
    добавил белый лист и хзш по sha256, а то смотрю сколько не модифицируй а пользы никакой.
     
  13. 440Hz

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

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    а ты выложи исходники да и все.
     
  14. Антошка

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

    С нами с:
    7 мар 2010
    Сообщения:
    62
    Симпатии:
    0
    440Hz
    Я щас пишу документацию по работе и прочее, хочу выложить в паблик сразу. Но на это не мало времени надо(