phizio / phix Goto Github PK
View Code? Open in Web Editor NEWlight-weight simple cms without MVC
light-weight simple cms without MVC
ТЗ на простой и удобный кеш-менеджер для asset-ов фреймворка phix
За основу взять не громоздкий minify а простой http://rakaz.nl/projects/combine/combine.phps
Логика его работы должна быть немного видоизменена:
// Функции для управления подключаемыми стилями и скриптами
require_once(MC_ROOT . '/scripts/assets_cache.php');
$app['mode'] // 'debug' или 'production'
В режиме debug все ресурсы должны подключаться раздельно и из своих папок (как в исходной версии):
<link rel="stylesheet" href="/vendor/twbs/bootstrap/dist/css/bootstrap.min.css">
<link rel="stylesheet" href="/vendor/twbs/bootstrap/dist/css/bootstrap-theme.min.css">
<link rel="stylesheet" href="/vendor/components/font-awesome/css/font-awesome.min.css">
<link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Open+Sans">
итп.
Т.е. $app['mode'] управляет только выводом внутри ф-ий css_resources() и js_resources(), либо они выдают имя сконкатенированного/зипованного кеша, либо как раньше - просто список ссылок на ресурсы. Это нужно для отладки. Т.к. иногда бывают ошибки в js - соответственно, их легче отловить, если консоль браузера тебе говорит
"ошибка в файле datatables.js, строка 554", чем если будет
"ошибка в файле 150826_132044_fhee45jdd556da66g67f7d999a87.js.gz, строка 1"
(строка 1, т.к. все минимифицировано и переводов строк нет ни одного;)
Именно для этого нужно иметь возможность переключиться на обычный режим работы без кеширования и минимификации.
И проще всего это делать как раз тем флагом среды выполнения - 'debug' или 'production', т.к. он переключает еще ряд моих сервисных функций
вывода других ошибок итп.
yymmdd_hhmmss_hash
например: 150826_132044_fhee45jdd556da66g67f7d999a87.js.gz
'twbs/bootstrap/dist/css/bootstrap.min.csscomponents/font-awesome/css/font-awesome.min.css' => '150826_132044_fhee45jdd556da66g67f7d999a87.js.gz'
т.е. в качестве ключа массива используется та переменная с объединенными ссылками на ресурсы.
Можно конечно хранить только md5-короткий вариант, и только таймстамповую часть:
'fhee45jdd556da66g67f7d999a87' => '150826_132044'
Но это приведет к тому, что при вызове любой страницы будет md5-титься длинная строка перечня ресурсов, а это пустая трата вычислительной мощности.
В конце концов, длина ключа массива в php не ограничена ничем, и сериализованный файл/массив cache_table не предназначен для ручной правки/чтения,
так что пусть хранятся с длинными ключами (первый вариант выше)
/tmp - там файл соответствия с сериализованным массивом
/tmp/cache - там кеш-файлы
<link rel="stylesheet" href="/tmp/cache/150826_132044_fhee45jdd556da66g67f7d999a87.js.gz">
Если кеш-файл в папке отсутствует, или не найдено соответствие в сериализованном массиве cache_table, то запускается конкатенация, gzip-овка,
создается новый кеш-файл, его имя сохраняется в сериализованный файл-массив cache_table - и опять же функции css_resources() и js_resources() выводят
ссылку на этот только что созданный кэш.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.