什麼是 Smart Content Dependency ManagementTM ?
摘要
- 智慧內容相依性管理™* 是關於為 * 增量構建 * 提供支援和面向的構想圈,同時對 ** 內容標準化原則 ** 保持真— 該* 永久連結 * 應該是單一真值來源,不論其內容在整個來源樹狀結構中如何進行策劃,並產生構件。
本文將介紹 https://sunstarsys.com/ 網站,作為相關圖表拓樸示範最佳實務與分析的案例研究。
洞穴
這只有在每次需要調整網頁內容時,才需要加權執行完整網站建置的費用。如果您的網站中的來源檔案少於 1K,則 relax,並視您的未來需求閱讀下列內容。您選擇使用我們的平台,此平台旨在與您一起擴展,而非您。對於大多數頁面而言,下列材料是關於具有超過 1K 頁面之網站的 * 稀疏內容相依性圖表 *。
例如,Apache https://www.OpenOffice.Org 網站能夠使用此組建系統的原始 Apache 版本建立 40K+ 檔案,並完全整合了增量組建的支援— 沒有任何已設定的相依性— 單獨使用傳統 SSI 技術。
預設情況下,我們的建置系統只會建置您變更的檔案,而不會影響檔案內部相依性 (除非您指定這些檔案於%path::相依性
— 下面還有更多功能。如果您變更的檔案位於範本 /
或者繁體中文
目錄,將會觸發完整的網站建置。
將您網站的 * 相依性圖表 * 合併使用
在數學上,a * 拓樸 * 是空間之 open 子集的完整規格
,其目的是指出 * 點 * 之間的相鄰關係
空間
。. . 時間
是圖表,a topology
針對
指定將圖形頂點連接在一起的邊緣的數量 (頂點被視為 的 * 點 )
,連接邊將確定這些點的鄰域為拓樸的「基底開放集」。* 導向的圖表拓樸 * 基本上是相同的功能,但會結合對下列項目的拓樸內嵌參照:
進入更大的拓樸空間
,其中嵌入的邊連接以方向性、非相交 (約旦) 曲線表示。
後面的概念是我們討論 * 相依性圖表的 * 拓樸時將使用的概念 與空間相關
您網站下方的來源檔案
內容 /
子目錄 (此處) 是
其度量拓樸適用
,和 的邊緣
不相交,導向連接檔案的 Jordan 曲線
至其所屬檔案集
相依 :
).
擁有清楚瞭解您網站的 * 相依性圖表 * 可確保您能夠大規模發揮建置技術的效能。. . 我們將您提供的資訊提供給%path::相依性
在建置時載入您網站程式庫 /path.pm
檔案,建構相依檔案的反向對應,然後使用 * 反向對應 * 來判斷要為任何指定項目建置的檔案完整語料庫svn 確認
您對我們的系統做了。
請務必注意,來源檔案之間的相依性關係可由下列項目完全擷取:%path::相依性
組建系統啟動載入期間的雜湊程式庫 /path.pm
從您的來源樹狀結構,這是我們所包含的內建檢視方式SunStarSys::檢視
Perl 封裝是用來操作的。關於walk_content_tree
, 已封存
,和seed_file_deps
公用程式函數匯入來源SunStarSys::使用率
在建構時是有用的輔助 Name %path::相依性
雜湊內建支援管理相依性快取,可大規模加速增量建置。
這是我們生活中的一部分程式庫 /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>};
};
請將程式碼放在這裡,以瞭解您想要 * 您的網站 * 如何運作的想法。是,有一些合理的複雜性 (包括 Perl 的正規表示式和 Perl 的 UNIX C-shell) 球體
介面,以非常精確的方式) 探討如何進行%path::相依性
在該檔案中構建,但不僅僅是將它視作最佳化工作,而是提供以自動且動態產生的方式建構 link topology 主要層面的必要基本材料。
項目在哪裡%path::相依性
產生?如果它們不是來自呼叫walk_content_tree { seed_file_deps ... }
, (基本上會深入您的 Markdown 來源檔案的標頭和內容),然後才被硬式編碼為程式庫 /path.pm
於載入時間。
循環相依性圖表為標準
我們的網站目前由240 個原始碼檔案
英吋內容 /
。. . 以下是85 頂點 x 465 邊
,可捲動的二維導向圖形,呈現英文語言頁面相依性在 ** 我們的網站 ** 上的最新快照 (使用 GraphViz 點
):
.
很複雜,就算只是小型網站也一樣!拿著時多邊交會 (在維度中可避免
). 特別注意的是,在我們網站的非封存檔案中,密集、循環相依性的核心集
/ 星期幾 /
朝圖表右下角的目錄,這是部落格網站的相依性圖表應該像這樣。這些相依性繪製於紅曲線
在影像中。
另請注意元素的內部、基本上隔離互連性/ 類別 /*/*
以及/archives/2022/11/*
。. . 唯一的外部相依性涉及未存檔的內容/ 星期 /
。. . 這是根據設計— 封存的短文應該只改變 adiabatically,也許只是為了調整它們分類
標頭。這些變更都不會對預先存在的內容造成重大影響,因此我們不會追蹤到%path::相依性
.
當然,我們的Orion Enterprise Wiki 處理循環相依性從未發生過問題。
不只是超連結?
** 否!** 實際上,您網站的 *link 拓樸 * 與來源樹狀結構的 * 相依性圖表完全不同 *。搜尋引擎會自然地拉出 *link 拓樸 *,但無法深入解析 * 相依性圖表 *。
以下是超過 240 個頂點 x 3859 個邊緣
** 我們的網站 ** (英文 * 連結拓樸 * 圖表的目前鳥瞰圖)使用 GraphViz 扭曲
):
.
您能發現紅邊
如 * 相依性圖表 * 中所指定?* 連結拓樸 * 圖表為質化且量化 ** 與上述 (大致上較小且較不相互連線) * 相依性圖表不同 **。
SSI 技術如何提供協助
傳統伺服器端包括 (SSI).
- ** 極佳 ** 縮減您網站的 * 相依性圖表 * 為可管理的大小,不犧牲頁面傳遞延遲
- ** 極佳 ** 用於減少大型確認訊息中的樣板流失,以進行對等複查並監督您建立的變更集
- lousy 用於將整個網頁重新調整為文件根目錄中的不同位置
個範本 API
ssi 標籤
語法:
{% ssi
`/content_rooted/path/to/source_file` %}
- 根目錄的路徑
內容
來源目錄 - 略過要作為之來源檔案的標頭部分
ssi
包含 - 將相對 URL 重寫為目標路徑內含內容中的絕對 URL
ssi 篩選
語法:
{{ 內容 |ssi }}
- 遞迴評估
ssi
要篩選之值的標記 - 可避免使用大值 (3+)
quick_deps
在 a@path::樣式
entry 的引數 hashref,可能會影響效能
為何不選擇 SymLinks?
- 難以安全地支援的裸機檔案系統抽象化
<virtualhost>
內容 - 與傳統同行
ssi
在完整的網頁上 - 我們的Orion Enterprise Wiki 系統不支援它們
建立 Permalink 工具
文件持續時間
Orion 的建置系統已整合支援我們所呼叫的 Document Curation,這是根據您設定內容的方式,重新塑造和重組內容的程序。類別
以及封存
Markdown 來源檔案中的標頭。這些功能預設為停用,但可透過設定來啟用category_root
(適用於類別支援) 或archive_root
(用於封存支援) 在相關聯的 hashref 引數中,至所需的@path::樣式
項目。
種類
- 使用範本建構新內容
ssi
標記指向永久連結位置時,移除封存
來自已建構來源頁面的標頭 - 類別為嚴格附加的 (亦即,從來源頁面的標頭移除類別並不會將其自即時網站的該類別中移除),
- 隨選產生
- 在單一確認中刪除所有類別,是將它們與所有來源頁面標頭中的確切規格同步的好方法,無須毀棄即時網站上保留的類別內容
封存的頁面
在我們的網站上,我們積極封存過時的短文,以維持新短文的建立時間,同時不會破壞封存文件的永久連結。* 相依性圖表 * 相對於/ 檔案 /
目錄 (針對我們的網站) 依照下列規則合理地獨立:
- 使用範本建構的內容
ssi
標記指向永久連結位置時,移除類別
以及封存
來自已建構來源頁面的標頭 - 內容於
/ (星期幾 | 客戶) /
永遠是永久連結,即使在存檔之後 - 封存有效地從 * 相依性圖 * 移除永久連結位置,同時不會從網站移除永久連結本身
LED
內嵌於領導內容之 Markdown 樣式界限中的 HTML 註解。我們使用 {領導編號} 為此目的。
處理導向已完成,使用導線
範本篩選。將此項目與ssi
編製類別檔案索引的篩選,其中包含一個以上的類別頁面。
結論
從組建效能的角度來處理網站的 * 相依性圖表 * 時,仍會發現有趣的資料結構和關係,這是比研究文宣深入資料結構和相關問題 (例如 link topology 1,2) 的新興趣領域。
純軟體開發專案的傳統增量建置仍是熱門主題。3,4 所涵蓋的研究於 2022 年 10 月發布,本論文預計要在大約一個月前完成。pluto 5 組建系統的功能與我們的功能相當類似 (組建本身可以動態重新產生和重建相依性)。
好消息是,我們為您提供作為我們客戶的保障。我們將讓您瞭解此空間中的最佳實務和藝術狀態,因此您將從過去十年到未來的經驗中獲益。
註腳
以連結拓樸為基礎之 Web 圖表中的叢集識別 2003 年第七屆國際資料庫工程與應用研討會。程序。
從連結拓樸推斷 Web 社群 第九屆「超文本與超媒體」ACM 會議的訴訟:連結、物件、時間與空間— 超媒體系統的結構:連結、物件、時間及空間— 超媒體系統的結構。1998 。
在增量建置軟體組態的優點和限制上:一項探索研究 ICSE ‘22:2022 年 5 月第 44 屆國際軟體工程研討會
邁向增量建置軟體組態 ICSE-NIER ‘22:ACM/IEEE 第 44 屆國際軟件工程會議:新構想和新興成果,2022 年 5 月
具有動態相依性的完善和最佳增量建置系統 OOPSLA 2015:2015 年 10 月 ACM SIGPLAN 國際物件導向程式設計、系統、語言及應用研討會的訴訟