Что такое Smart Content Dependency ManagementTM?
Абстрактный
Управление зависимостями интеллектуального контента™ о круге идей, связанных с предоставлением поддержки и облегчения для инкрементальных сборок, оставаясь верным Принципу нормализации контента — тот постоянные ссылки.
В этой статье представлен веб-сайт https://sunstarsys.com/ в качестве примера для демонстрации лучших практик и анализа связанных топологий графов.
Предупреждения
Это важно только тогда, когда вам нужно взвесить расходы на выполнение полной сборки сайта каждый раз, когда вам нужно настроить контент на веб-странице. Если на вашем веб-сайте содержится менее 1K исходных файлов, расслабьтесь, и прочитайте следующее с учетом ваших будущих потребностей. Вы решили использовать нашу платформу, которая предназначена для масштабирования вместе с вами, а не против вас. Для большинства страниц, этот материал ниже о разреженных диаграммах зависимости контента для сайтов с более чем 1K страниц.
Например, веб-сайт Apache https://www.OpenOffice.Org смог создать свои файлы 40K+, используя оригинальную версию Apache этой системы сборки, с полностью интегрированной поддержкой инкрементальных сборок. — без настроенных зависимостей —
По умолчанию, наша система сборки будет создавать только файлы, которые вы изменили, без заботы о внутрифайловых зависимостях (если вы не указали их в %path::зависимости
— подробнее об этом ниже). Если измененный файл находится в шаблоны/
или либ/
Сплетение Диаграмма зависимости вашего сайта вместе
Математически, a топология является полной спецификацией открытых подмножеств пространства
, целью которого является указание близости отношений между точками
пространства
. Когда
граф, топология
для
означает указание ребер, соединяющих вершины диаграммы вместе (здесь вершины рассматриваются как точки
, и соединительные кромки определяют окрестности этих точек как основные открытые наборы для топологии). направленная топология графа по существу то же самое, но включает в себя ссылку на топологическое встраивание
в более крупное топологическое пространство
Последняя концепция – это то, что мы будем использовать при обсуждении топологии графа зависимости связан с пространством
исходных файлов под вашим сайтом
содержание/
подкаталог (здесь равно
с его метрической топологией для
и края
являются непересекающимися, направленными кривыми Иордании, соединяющими файл
к своим файлам, на которых
зависит:
Наличие четкое понимание графика зависимости вашего веб-сайта гарантирует, что вы сможете максимизировать производительность нашей технологии сборки в масштабе. Мы берем информацию, которую вы предоставляете %path::зависимости
во время загрузки вашего сайта lib/path.pm
файл, создать обратную карту зависимых файлов и использовать эту обратную карту, чтобы определить полный корпус файлов для построения для любого заданного фиксация SVN
Важно отметить, что зависимости между исходными файлами могут и должны быть полностью захвачены %path::зависимости
хеш при загрузке системы сборки lib/path.pm
из вашего исходного дерева, как встроенные виды, содержащиеся в нашем SunStarSys::Вид
Пакет Perl предназначен для работы. The walk_content_tree
, архивировано
, и seed_file_deps
коммунальные функции, импортируемые из SunStarSys::Утил
полезны при построении %path::зависимости
Вот эта часть нашей жизни lib/path.pm
.
our (%dependencies, @acl);
# entries computed below at build-time, or drawn from the .deps cache file
walk_content_tree {
$File::Find::prune = 1, return if m#^/(images|css|editor\.md|js|fontawesome)\b#;
return if -d "content/$_";
seed_file_deps, seed_file_acl if /\.(?:md|ya?ml)[^\/]*$/;
for my $lang (qw/en es de ru sv he zh-TW fr/) {
if (/\.md\.$lang$/ or m!/index\.html\.$lang$! or m!/files/|/slides/|/bin/!) {
push @{$dependencies{"/sitemap.html.$lang"}}, $_ if !archived;
}
if (s!/index\.html\.$lang$!!) {
$dependencies{"$_/index.html.$lang"} = [
grep s/^content// && !archived,
glob("'content$_'/*.{md.$lang,pl,pm,pptx}"),
glob("'content$_'/*/index.html.$lang")
];
push @{$dependencies{"$_/index.html.$lang"}}, grep -f && s/^content// && !m!/index\.html\.$lang!,
glob("'content$_'/*") if m!/files\b!;
}
}
}
and do {
while (my ($k, $v) = each %{$facts->{dependencies}}) {
push @{$dependencies{$k}}, grep $k ne $_, grep s/^content// && !archived, map glob("'content'$_"), ref $v ? @$v : split /[;,]?\s+/, $v;
}
open my $fh, "<:encoding(UTF-8)", "lib/acl.yml" or die "Can't open acl.yml: $!";
push @acl, @{Load join "", <$fh>};
};
Пожалуйста, замалчивайте этот код для идей о том, как вы хотите, чтобы ваш сайт работал. Да, есть некоторая разумная сложность (включая как регулярные выражения Перла, так и оболочку UNIX C Перла). глобус
интерфейсов, очень точным образом) вокруг как %path::зависимости
Где записи в %path::зависимости
Происхождение? Если они не рождаются от призыва walk_content_tree { seed_file_deps ... }
, (который в основном погружается в заголовки и содержимое ваших исходных файлов разметки), тогда они просто жестко закодированы в lib/path.pm
Циклические графики зависимостей являются нормой
Наш сайт состоит из 240 исходных файлов
дюймов содержание/
. Вот 85 вершин x 465 ребер
, прокручиваемое двумерное направленное графическое представление последнего снимка зависимостей страницы английского языка на нашем сайте (с помощью GraphViz точка
.
.
Довольно сложный, даже для небольшого сайта, такого как этот! Много пересечений краев при приеме (неизбежно в измерении)
). Особо следует отметить основной набор плотных циклических зависимостей в неархивированных файлах нашего сайта.
/эссе/
директория, в направлении нижнего центра справа от графика, как должен выглядеть хороший граф зависимостей сайта блога. Эти зависимости формируются в красные кривые
Также обратите внимание на внутреннюю, по существу изолированную взаимосвязанность элементов в /категории/*/*
и /archives/2022/11/*
. Единственные внешние зависимости включают в себя неархивированный контент /эссе/*
. Это по дизайну — архивные эссе должны только изменяться адиабатически, возможно, только для корректировок их Категория
заголовков. Ни одно из этих изменений не влияет на существующий контент, поэтому мы не отслеживаем его в %path::зависимости
Конечно, наш Орион Энтерпрайз Вики.
Разве это не о гиперссылках?
Нет! На самом деле, топология ссылок вашего веб-сайта является совершенно отдельным вопросом от графа зависимости исходного дерева. Поисковая система, естественно, выделит топологию ссылок, но не имеет представления о графе зависимости.
Вот a 240+ вершин x 3859 ребер
, текущий график птиц-глаз английского ссылка топология график для наш сайт (с помощью GraphViz шопинг
.
.
Вы можете заметить красные края
Чем может помочь технология SSI
Traditional Включает сервер.
- отлично для сокращения графика зависимости вашего веб-сайта до управляемого размера без ущерба для задержки доставки страниц
API шаблонов
тег ssi
Синтаксис:
{% ssi
`/content_rooted/path/to/source_file` %}
- пути, укорененные в
содержимое
исходный каталог - пропускает верхнюю часть исходного файла
ssi
включено
ssi фильтр
Синтаксис:
{{ содержимое|ssi }}
- рекурсивная оценка
ssi
теги в значении для фильтрации - полезен для избежания использования большого количества (3+)
quick_deps
через@path::шаблоны
Почему бы не SymLinks?
- абстракция файловой системы barebones, которую трудно безопасно поддерживать в
<virtualhost>
контекст - одинаковые минусы с традиционными
ssi
на всех веб-страницах - наш Орион Энтерпрайз Вики.
Инструменты сборки для постоянных ссылок
Продолжительность документа
Система сборки Orion имеет интегрированную поддержку того, что мы называем Document Curation, что является процессом реконтекстуализации и реорганизации вашего контента в зависимости от того, как вы устанавливаете контент. Категории
и Архив
заголовки в исходных файлах разметки. Эти функции по умолчанию отключены, но их можно активировать, установив category_root
(для поддержки категории) или archive_root
(для поддержки архивирования) в соответствующем аргументе хэшрефа к желаемому @path::шаблоны
Категории
- новый контент создается с использованием шаблона
ssi
теги, указывающие на местоположение постоянной ссылки, при удаленииАрхив
заголовок с созданной исходной страницы - категории являются строго аддитивными (т.е. удаление категории из заголовков исходной страницы не удалит ее из этой категории на действующем сайте),
- генерируется по требованию
архивированных страниц
На нашем сайте мы агрессивно архивируем устаревшие эссе, чтобы сохранить время создания новых эссе на низком уровне, не разрушая при этом постоянные ссылки на архивные документы. диаграмма зависимости относительно Архив/
- контент, построенный с помощью шаблона
ssi
теги, указывающие на местоположение постоянной ссылки, при удаленииКатегории
иАрхив
заголовки с созданной исходной страницы - содержание в
/(эссе|клиенты)/
всегда постоянные ссылки, даже после архивирования
Лед
HTML-комментарии, встроенные в границы формы прозы Markdown для контента lede. Мы используем **{# водить #}
Обработка светодиодов осуществляется с ледяной
Фильтр шаблонов. Полезно сочетать это с ssi
Выводы
Есть интересные структуры данных и отношения, которые еще предстоит раскрыть при работе с графиком зависимости веб-сайта с точки зрения производительности сборки, что представляет собой гораздо более новую область интереса, чем исследовательская литература, изучающая структуры данных и связанные с ними проблемы, связанные с топологией ссылок1,2.
Обычные инкрементальные сборки для чистых проектов разработки программного обеспечения по-прежнему являются горячей темой. Исследование, опубликованное в журнале 3,4, было опубликовано в октябре 2022 года, примерно за месяц до завершения этого эссе. Система сборки pluto5 имеет функции, очень похожие на наши (сама сборка может динамически восстанавливать и восстанавливать зависимости).
Хорошая новость заключается в том, что вы являетесь нашим клиентом. Мы будем держать вас в курсе лучших практик и современного состояния в этом пространстве, поэтому вы будете извлекать выгоду из наших уроков, извлеченных за последнее десятилетие и в будущем.
Сноски
Идентификация кластеров в веб-диаграмме на основе топологии ссылок.
Вывод веб-сообществ из топологии ссылок Материалы девятой конференции ACM по гипертексту и гипермедиа: ссылки, объекты, время и пространство — структура в гипермедийных системах: связи, объекты, время и пространство —
О преимуществах и ограничениях инкрементных конфигураций ПО для сборки: исследование.
Звуковая и оптимальная инкрементальная система сборки с динамическими зависимостями.