Сжатие css js php

RiaBuilder — сжимаем js, css, less, html средствами PHP

Доброго времени суток, <%- username %>! Наконец-то нашлось время для оформления и публикации в open source своих решений, с одним из которых хочу поделиться с хабросообществом.

RiaBuilder — PHP библиотека, позволяющая на основе package.json файлов сжимать JavaScript, CSS, LESS и HTML код в один файл. Я стремился сделать библиотеку максимально простой в использовании и с достаточно богатым API.
Для работы библиотека использует только PHP, что даёт возможность использовать её без установки дополнительного ПО для компрессоров.

Что умеет:

  • Поддержка форматов JavaScript, CSS, LESS, HTML;
  • Подгрузка вложенных модулей;
  • Подгрузка файлов по маске (*.js);
  • Компиляция LESS в CSS средствами PHP;
  • Сжатие (минификация) JavaScript, CSS, HTML кода средствами PHP;
  • Подключение файлов в зависимости от названия и версии браузера;
  • Создание билда как из командной строки, так и динамически из php;
  • Добавление обёртки в виде функций для JavaScript кода;
  • Основной функционал покрыт юнит тестами.

Пример использования

/var/www/riabuilder/run -c testapp
. // Javascript часть библиотеки RIABuilder if (RIABuilder.matchBrowser("ie <9"))");> function a(m)

Библиотека скорее всего подойдёт для малых и средних веб-приложений, так как не имеет анализатора зависимостей. Я использую её для нескольких не малых проектов, а значит в будущем в ней как минимум будут исправляться найденные ошибки.
Более подробное описание и примеры использования можно найти на GitHub.

Источник

Оптимизация, сжатие и кэширование HTML, CSS, JS в PHP

php оптимизация кода

Что это и как это выглядит можно понять на следующем слайде:

Несколько способов оптимизации:

Optimize-2.3.4 — Оптимизация сгенерированного PHP скриптом HTML/XML/JS/CSS кода перед выводом в браузер, оптимизация «на лету» от автора Rin

Возможности оптимизатора HTML/XML кода:

  • удаляет пробелы вначале и в конце переносов строк
  • удаляет пробелы ПОСЛЕ открывающих тагов, если перед тагом есть пробел
  • удаляет пробелы ПЕРЕД закрывающими тагами, если после тага есть пробел
  • удаляет многострочные или большие html комментарии, комментарии в javascript и стилях.
  • корректно обрабатывает таги

Никогда не экономьте на отступах и пробелах в написании кода и ваш КПД увеличится! 🙂 С параметрами по умолчанию программа даёт приемлемое сжатие за небольшое время работы, (баланс между степенью сжатия и скоростью работы) для использования оптимизации «на лету». Скачать Optimize-2.3.4.7z
Сжатие HTML

(?![).)(.*)(?>(?!]).)—>/Uis’,’/[[:blank:]]+/’),array(»,’ ‘),str_replace(array(«n»,»r»,»t»),»,$buf)); > ob_start(‘ob_html_compress’); ?>

 $modified = 0; $offset = 60 * 60 * 24 * 7; header ('Content-type: text/javascript; charset=UTF-8'); header ('vary: accept-encoding'); header ('Cache-Control: max-age=' . $offset); header ('Pragma:'); header ("Last-Modified: ".gmdate("D, d M Y H:i:s", $modified )." GMT"); if(extension_loaded('zlib')) ob_start("compress"); include('init.js'); ob_end_flush(); if(extension_loaded('zlib')) ?>

В init.js файл напишите ваш JavaScript-код и сохранить его в директории, где сохранен js.php
Оптимизация и кэширование CSSсоздайте файл css.php со следующим кодом:

 $mincss = preg_replace('!/*[^*]**+([^/][^*]**+)*/!', '', $mincss); $mincss = str_replace(': ', ':', $mincss); $mincss = str_replace(array("rn",' ',' '), '', $mincss); $mincss = str_replace(';>','>', $mincss); $modified = 0; $offset = 60 * 60 * 24 * 7; if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) && strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']) >= $modified) < header("HTTP/1.0 304 Not Modified"); header ('Cache-Control:'); >else < header ('Cache-Control: max-age=' . $offset); header ('Content-type: text/css; charset=UTF-8'); header ('Pragma:'); header ("Last-Modified: ".gmdate("D, d M Y H:i:s", $modified )." GMT"); if(extension_loaded('zlib'))ob_start("compress"); echo $mincss; ob_end_flush(); if(extension_loaded('zlib')) > ?>

Источник

Минификация (сжатие) JS- и CSS-файлов на PHP

Я подробно рассмотрел на примере популярных CMS, как выполнить минификацию (сжатие) исходного кода сайта. Для кого-то это может показаться совсем не нужным дополнением, но я рекомендую уделить этому особое внимание.

Для чего вообще делается сжатие файлов? Для того, чтобы уменьшить их вес, тем самым ускорить работу вашего сайта.

Приведу простой пример. У вас есть не сжатая библиотека jQuery, которая весит 120 килобайт. А в сжатом виде эта же библиотека будет весить 60 килобайт. Получаем экономию в 60 КБ, что вполне неплохо. А если таких файлов 15-20?

Минификация (сжатие) JS- и CSS-файлов на PHP

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

Минификация (сжатие) CSS-файлов на PHP

Основная идея минификации стилей будет заключаться в следующем: мы объединяем все файлы в один и удаляем в нем все переводы строк, символы табуляции, двойные пробелы и комментарии.

PHP-скрипт будет выглядеть следующим образом:

  ob_start("compress"); include("../style/style1.css"); // Ссылка на стиль 1 include("../style/style2.css"); // Ссылка на стиль 2 include("../style/style3.css"); // Ссылка на стиль 3 include("../style/style4.css"); // Ссылка на стиль 4 ob_end_flush(); ?>

В нем вы прописываете адреса до всех ваших файлов стилей и отправляете итоговый файл на сайт по FTP или другим удобным для вас способом.

После чего на сайте вы удаляете указанные в скрипте стили и подключаете новый стиль по такому принципу:

Где «/style.php» – это ссылка до ранее созданного PHP-файла.

Сохраняете все изменения и смотрите, не поехал ли дизайн на вашем сайте, если поехал – то проверьте, корректные ли адреса вы прописали в скрипте.

Теперь, если вы обратитесь к вашему скрипту через браузер, то увидите, что ваши стили максимально оптимизированы.

Минификация (сжатие) JS-файлов на PHP

Оптимизация скриптов выполняется примерно по тому же принципу: объединяем все файлы в один и удаляем в нем переводы строк, двойной пробел и знак табуляции, а также комментарии кода.

Итоговый скрипт будет выглядеть следующим образом:

  ob_start("compress"); include("../js/script1.js"); // Ссылка на скрипт 1 include("../js/script2.js"); // Ссылка на скрипт 2 include("../js/script3.js"); // Ссылка на скрипт 3 include("../js/script4.js"); // Ссылка на скрипт 4 ob_end_flush(); ?>

Не забывайте в нем прописать ссылки до ваших скриптов.

И по аналогии с CSS-файлами – подключение следующее:

Где «/script.php» – ссылка до ранее созданного PHP-скрипта.

На что здесь стоит обратить внимание?

  1. Проставляйте корректные ссылки до ваших файлов.
  2. На вашем хостинге должна быть поддержка PHP.

В остальном вроде проблем быть не должно, но если все-таки они появились – пишите об этом в комментариях, постараюсь вам помочь.

Источник

Saved searches

Use saved searches to filter your results more quickly

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.

CSS & JavaScript minifier, in PHP. Removes whitespace, strips comments, combines files (incl. @import statements and small assets in CSS files), and optimizes/shortens a few common programming patterns.

License

matthiasmullie/minify

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Sign In Required

Please sign in to use Codespaces.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching Xcode

If nothing happens, download Xcode and try again.

Launching Visual Studio Code

Your codespace will open once ready.

There was a problem preparing your codespace, please try again.

Latest commit

Git stats

Files

Failed to load latest commit information.

README.md

Removes whitespace, strips comments, combines files (incl. @import statements and small assets in CSS files), and optimizes/shortens a few common programming patterns, such as:

  • @import url(«http://path») -> @import «http://path»
  • #ff0000 , #ff00ff -> red , #f0f
  • -0px , 50.00px -> 0 , 50px
  • bold -> 700
  • p <> -> removed

And it comes with a huge test suite.

use MatthiasMullie\Minify; $sourcePath = '/path/to/source/css/file.css'; $minifier = new Minify\CSS($sourcePath); // we can even add another file, they'll then be // joined in 1 output file $sourcePath2 = '/path/to/second/source/css/file.css'; $minifier->add($sourcePath2); // or we can just add plain CSS $css = 'body < color: #000000; >'; $minifier->add($css); // save minified file to disk $minifiedPath = '/path/to/minified/css/file.css'; $minifier->minify($minifiedPath); // or just output the content echo $minifier->minify();
// just look at the CSS example; it's exactly the same, but with the JS class & JS files :)

Available methods, for both CSS & JS minifier, are:

__construct(/* overload paths */)

The object constructor accepts 0, 1 or multiple paths of files, or even complete CSS/JS content, that should be minified. All CSS/JS passed along, will be combined into 1 minified file.

use MatthiasMullie\Minify; $minifier = new Minify\JS($path1, $path2);

This is roughly equivalent to the constructor.

$minifier->add($path3); $minifier->add($js);

This will minify the files’ content, save the result to $path and return the resulting content. If the $path parameter is omitted, the result will not be written anywhere.

CAUTION: If you have CSS with relative paths (to imports, images, . ), you should always specify a target path! Then those relative paths will be adjusted in accordance with the new path.

$minifier->minify('/target/path.js');

Minifies and optionally saves to a file, just like minify() , but it also gzencode() s the minified content.

setMaxImportSize($size) (CSS only)

The CSS minifier will automatically embed referenced files (like images, fonts, . ) into the minified CSS, so they don’t have to be fetched over multiple connections.

However, for really large files, it’s likely better to load them separately (as it would increase the CSS load time if they were included.)

This method allows the max size of files to import into the minified CSS to be set (in kB). The default size is 5.

$minifier->setMaxImportSize(10);

setImportExtensions($extensions) (CSS only)

The CSS minifier will automatically embed referenced files (like images, fonts, . ) into minified CSS, so they don’t have to be fetched over multiple connections.

This methods allows the type of files to be specified, along with their data:mime type.

The default embedded file types are gif, png, jpg, jpeg, svg, apng, avif, webp, woff and woff2.

$extensions = array( 'gif' => 'data:image/gif', 'png' => 'data:image/png', ); $minifier->setImportExtensions($extensions);

Simply add a dependency on matthiasmullie/minify to your composer.json file if you use Composer to manage the dependencies of your project:

composer require matthiasmullie/minify

Although it’s recommended to use Composer, you can actually include these files anyway you want.

About

CSS & JavaScript minifier, in PHP. Removes whitespace, strips comments, combines files (incl. @import statements and small assets in CSS files), and optimizes/shortens a few common programming patterns.

Источник

Читайте также:  Java cast int to integer
Оцените статью