Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Сжималка для JS/CSS (https://javascript.ru/forum/misc/50617-szhimalka-dlya-js-css.html)

kostyanet 04.10.2014 16:38

Сжималка для JS/CSS
 
С первого захода я сразу нашел сжималку для css на регах, а js пропускал с входа на выход до лучших времен. Со второго захода лучшие времена не наступили: выбрать можно либо из монструозных вариантов типа как в этом списке - http://javascript.ru/optimize/javascript-compression - которые годятся только для design-time; либо из каких-то глюкавых поделок, некоторые из которых вроде работают, но только в некотором подмножестве вариантов исходника, как например я вытянул из метода minify у этого чувака https://github.com/bcosca/fatfree

Смысл в том чтобы вставлять js и css прямо в html без всяких линков на файлы. Простейший скрипт на php, который одинаково работает как с линка, так и с подачи параметра из другой модели (кодов) просто смотрит есть такой файл (с префиксом _min.) - если есть - читает его либо в браузер (если по линку), либо в страницу отдает. Если такого файла нет или его дата младше оригинала - берется оригинал, сжимается, записывается, читается и далее по тексту выше. То есть там две проверки и 1 чтение - если оригиналы не редактировать.

Я изложил задачу целиком чтобы кто понимает подсказал может я вообще не в ту сторону поехал.

Относительно куда уже поехал - нет ли у кого простого и безглючного компрессора для js и css. Чтобы пробелы, переносы, каменты - выкинуть, а все остальное - оставить как было.

Функция того чувака с гитхаба работает нормально, но, предъявляет требования - хочет чтобы урлы были в кавычках, а гугля, например, отдает без кавычек в том css который скрипт получает через @import. В результате в сжатом файле остается src: url(http) и все. ЧТобы написать чуваку надо наверно регаться на гитхабе, а сам я в этом бисере ничерта не понимаю.

Vlasenko Fedor 04.10.2014 16:51

это для js, подключаешь
<script type='text/javascript' src='/script.php'></script>

<?php
header('Content-type: text/javascript; charset: UTF-8');
header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 2592000) . ' GMT');
header("Content-Encoding: gzip");
header('Last-Modified: '.gmdate('D, d M Y H:i:s',filemtime(__FILE__)).' GMT');
?>
alert('Js');

аналогично для css подключаем
<link rel="stylesheet" type="text/css" href="/css.php" />

<?php
header('Content-type: text/css; charset: UTF-8');
header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 2592000) . ' GMT');
header("Content-Encoding: gzip");
header('Last-Modified: '.gmdate('D, d M Y H:i:s',filemtime(__FILE__)).' GMT');
?>
body{ color: red;}

kostyanet 04.10.2014 16:57

Балин! Зипуется автоматом на сервере, не в этом дело. Надо чтобы в хтмле было не так

border: 1px solid red;
color:black;

а вот так

border:1px solid red;color:black;


Кстати, в процессе поиска я конечно насмотрелся на вот такую запись:

header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 2592000) . ' GMT');

и возник вопрос - а что она обозначает?

Типа через 2592000 микросекунд надо будет взять с сервера, а не с кеша? На каком основании? Ну то есть что произойдет за эти 2592000 микросекунд такого, чего нельзя отождествить как таковое и немедленно подать команду обновить потому что так надо.

В чем смысл времени хранения ресурса в кеше?

Vlasenko Fedor 04.10.2014 17:09

Цитата:

Сообщение от kostyanet
fatfree

у них есть своя группа в Google, напиши им туда
и в чем проблема вручную сделать минифицированные версии
http://compressorrater.thruhere.net/
http://closure-compiler.appspot.com/home
c css также найдешь

kostyanet 04.10.2014 17:20

Вся эта мумификация относится к фазе дизайна, ясень-пень, но бегать сжимать куда-то после каждого чиха начальства - не самый лучший пень.

Собственно я даже эту самую функцию сделал единственным include в проекте, то есть никуда ее не профтыкал методом, а по-старинке из файла гружу когда потребность возникает, поскольку оно не для генерации страницы, а для генерации контента для генерации страницы.

Короче, я понял что надо сделать - надо в кавычки заключить урл в импорте css'а и выкинуть рекурсию на сжатие импорта - в той функции. Все равно у меня не будет таких файлов.

ЗЫ Самое прикольное что я скачал полдюжины скриптов и каждый был со своей проприетарной глюкавостью. То есть низким уровнем абстракции. Под себя подгонят - и вылаживают на публику.

У Гуглей есть типа годный фреймфорк - но у меня тямы не хватит его интегрировать с нотепадом++

Vlasenko Fedor 04.10.2014 17:27

Опять ты начал писать, что не поймешь тебя
Цитата:

Сообщение от kostyanet
, чего нельзя отождествить как таковое и немедленно подать команду обновить потому что так надо

это другая уже технология <html manifest="cache.manifest">

kostyanet 04.10.2014 17:29

Зачем задается время смерти кеша? Что может произойти за это время, и чего точно не произойдет и почему он должен умереть именно в это время?

В чем практический смысл той самой строчки?

Кстати, Хром - ну улеж, самый быстрый в мире, намертво цепляет кеш пилюя на все спецификации. С юзерской стороны это выглядит как х чего обновишь, а с дизайнерской - отсутствие событий load.

kostyanet 04.10.2014 17:34

Я к тому что кладут эти браузеры и их пейсатели на все эти строчки. У меня в ФФ лимит кеша - 100 Мб. Я и 1 Мб делал - ему пох, кеширует все как из пушки.

Ну вот, например про что вы пишите:

Цитата:

The manifest attribute should be included on every page of your web application that you want cached.
Инче, типа, будешь грузить запросами весь интернет... Как бы не так.

Цитата:

The browser does not cache a page if it does not contain the manifest attribute
Ржунимагу :)

Вот попробуйте отключить в Хроме кеширование и хронологию... ага. Как же он без кеша будет самым быстрым внатури?

Vlasenko Fedor 04.10.2014 17:35

Цитата:

Сообщение от kostyanet
В чем практический смысл той самой строчки?

На протяжении какого времени не запрашивать файл с сервера использовать закешированный броузером

kostyanet 04.10.2014 17:41

Это не смысл, а значение, типа что вижу то пою. Ладно, я в принципе знаю - это со статики тянется. Типа неделю дадим - там само обновится, если чо-та новое появится - увидят.

Короче, компрессор есть?


Часовой пояс GMT +3, время: 08:24.