Site updated: 2024-01-25 14:50:28

This commit is contained in:
qinglong committed 2024-01-25 14:50:31 +08:00
1 parent d67cec3b41
commit d3ad91bc4a
207 files changed
+213 -213

No files matched your search

+3 -3
View File
@@ -110,9 +110,9 @@
"Windows",
"工具",
"SpringBoot",
"快速部署",
"Bat",
"批处理",
"快速部署"
"批处理"
]
},
{
@@ -175,7 +175,7 @@
"url": "https://hitoli.com/2023/07/01/shoka%E4%B8%BB%E9%A2%98%E9%80%9F%E5%BA%A6%E4%BC%98%E5%8C%96-%E6%8B%86%E5%88%86jsdelivr/",
"title": "shoka主题速度优化-拆分jsdelivr",
"date_published": "2023-06-30T17:15:00.000Z",
"content_html": "<h4 id=\"前言\"><a class=\"anchor\" href=\"#前言\">#</a> 前言</h4>\n<div class=\"note primary\">\n<p>该篇文章介绍了如何对 shoka 主题进行 jsdelivr 聚合拆分,以便使用国内镜像源和异步加载,从而优化网站速度。具体操作包括更改模板、注册 helper 和更改配置。其中,推荐使用 advVendors 配置,可自定义加载源和 js 文件名,同时支持异步加载、pjax 刷新和 integrity 防 XXS 等特性。</p>\n</div>\n<p>众所周知,jsdelivr 在国内的速度可以用慢的一批来形容而 shoka 主题使用了 jsdelivr 的 combine 功能加载第三方 js, 而 combine 在国内没有镜像源并且阻断了使用 CDN 并发加速的道路,本篇博文会将 jsdelivr 聚合拆分为几个独立的 js, 以便使用国内镜像源和异步加载。</p>\n<div class=\"note info\">\n<p>此方案相较于本地化而言有较大速度优势,尤其在 CDN 并发加持下</p>\n</div>\n<h4 id=\"拆分-jsdelivr\"><a class=\"anchor\" href=\"#拆分-jsdelivr\">#</a> 拆分 jsdelivr</h4>\n<ol>\n<li>更改模板</li>\n</ol>\n<p>打开 <span class=\"red\">shoka\\layout_partials\\layout.njk</span>,找到第 144 行左右:</p>\n<p><figure class=\"highlight html\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"tag\">&lt;<span class=\"name\">script</span> <span class=\"attr\">src</span>=<span class=\"string\">&quot;https://cdn.polyfill.io/v3/polyfill.js&quot;</span>&gt;</span><span class=\"tag\">&lt;/<span class=\"name\">script</span>&gt;</span></span><br><span class=\"line\"><span class=\"symbol\">&amp;#123;</span><span class=\"symbol\">&amp;#123;</span> _vendor_js() <span class=\"symbol\">&amp;#125;</span><span class=\"symbol\">&amp;#125;</span></span><br><span class=\"line\"><span class=\"symbol\">&amp;#123;</span><span class=\"symbol\">&amp;#123;</span> _js(&#x27;app.js&#x27;) <span class=\"symbol\">&amp;#125;</span><span class=\"symbol\">&amp;#125;</span></span><br><span class=\"line\"><span class=\"symbol\">&amp;#123;</span><span class=\"symbol\">&amp;#123;</span> partial(&#x27;_partials/third-party/baidu-analytics.njk&#x27;, <span class=\"symbol\">&amp;#123;</span><span class=\"symbol\">&amp;#125;</span>, <span class=\"symbol\">&amp;#123;</span>cache: true<span class=\"symbol\">&amp;#125;</span>) <span class=\"symbol\">&amp;#125;</span><span class=\"symbol\">&amp;#125;</span></span><br></pre></td></tr></table></figure></p>\n<p>更改为如下内容:</p>\n<p><figure class=\"highlight html\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br><span class=\"line\">5</span><br><span class=\"line\">6</span><br><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"tag\">&lt;<span class=\"name\">script</span> <span class=\"attr\">src</span>=<span class=\"string\">&quot;https://cdn.polyfill.io/v3/polyfill.js&quot;</span>&gt;</span><span class=\"tag\">&lt;/<span class=\"name\">script</span>&gt;</span></span><br><span class=\"line\"><span class=\"symbol\">&amp;#123;</span>%- if theme.advVendors.enable %<span class=\"symbol\">&amp;#125;</span></span><br><span class=\"line\">\t<span class=\"symbol\">&amp;#123;</span>% for i in _list_vendor_js() %<span class=\"symbol\">&amp;#125;</span></span><br><span class=\"line\">\t\t<span class=\"symbol\">&amp;#123;</span><span class=\"symbol\">&amp;#123;</span> _adv_vendor_js(i) <span class=\"symbol\">&amp;#125;</span><span class=\"symbol\">&amp;#125;</span></span><br><span class=\"line\">\t<span class=\"symbol\">&amp;#123;</span>% endfor %<span class=\"symbol\">&amp;#125;</span></span><br><span class=\"line\"><span class=\"symbol\">&amp;#123;</span>%- else %<span class=\"symbol\">&amp;#125;</span></span><br><span class=\"line\"><span class=\"symbol\">&amp;#123;</span><span class=\"symbol\">&amp;#123;</span> _vendor_js() <span class=\"symbol\">&amp;#125;</span><span class=\"symbol\">&amp;#125;</span></span><br><span class=\"line\"><span class=\"symbol\">&amp;#123;</span>%- endif %<span class=\"symbol\">&amp;#125;</span></span><br><span class=\"line\"><span class=\"symbol\">&amp;#123;</span><span class=\"symbol\">&amp;#123;</span> _js(&#x27;app.js&#x27;)<span class=\"symbol\">&amp;#125;</span><span class=\"symbol\">&amp;#125;</span></span><br><span class=\"line\"><span class=\"symbol\">&amp;#123;</span><span class=\"symbol\">&amp;#123;</span> partial(&#x27;_partials/third-party/baidu-analytics.njk&#x27;, <span class=\"symbol\">&amp;#123;</span><span class=\"symbol\">&amp;#125;</span>, <span class=\"symbol\">&amp;#123;</span>cache: true<spanLine truncated
"content_html": "<h4 id=\"前言\"><a class=\"anchor\" href=\"#前言\">#</a> 前言</h4>\n<div class=\"note primary\">\n<p>该篇文章介绍了如何对 shoka 主题进行 jsdelivr 聚合拆分,以便使用国内镜像源和异步加载,从而优化网站速度。具体操作包括更改模板、注册 helper 和更改配置。其中,推荐使用 advVendors 配置,可自定义加载源和 js 文件名,同时支持异步加载、pjax 刷新和 integrity 防 XXS 等特性。</p>\n</div>\n<p>众所周知,jsdelivr 在国内的速度可以用慢的一批来形容而 shoka 主题使用了 jsdelivr 的 combine 功能加载第三方 js, 而 combine 在国内没有镜像源并且阻断了使用 CDN 并发加速的道路,本篇博文会将 jsdelivr 聚合拆分为几个独立的 js, 以便使用国内镜像源和异步加载。</p>\n<div class=\"note info\">\n<p>此方案相较于本地化而言有较大速度优势,尤其在 CDN 并发加持下</p>\n</div>\n<h4 id=\"拆分-jsdelivr\"><a class=\"anchor\" href=\"#拆分-jsdelivr\">#</a> 拆分 jsdelivr</h4>\n<ol>\n<li>更改模板</li>\n</ol>\n<p>打开 <span class=\"red\">shoka\\layout\\_partials\\layout.njk</span>,找到第 144 行左右:</p>\n<p><figure class=\"highlight html\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"tag\">&lt;<span class=\"name\">script</span> <span class=\"attr\">src</span>=<span class=\"string\">&quot;https://cdn.polyfill.io/v3/polyfill.js&quot;</span>&gt;</span><span class=\"tag\">&lt;/<span class=\"name\">script</span>&gt;</span></span><br><span class=\"line\"><span class=\"symbol\">&amp;#123;</span><span class=\"symbol\">&amp;#123;</span> _vendor_js() <span class=\"symbol\">&amp;#125;</span><span class=\"symbol\">&amp;#125;</span></span><br><span class=\"line\"><span class=\"symbol\">&amp;#123;</span><span class=\"symbol\">&amp;#123;</span> _js(&#x27;app.js&#x27;) <span class=\"symbol\">&amp;#125;</span><span class=\"symbol\">&amp;#125;</span></span><br><span class=\"line\"><span class=\"symbol\">&amp;#123;</span><span class=\"symbol\">&amp;#123;</span> partial(&#x27;_partials/third-party/baidu-analytics.njk&#x27;, <span class=\"symbol\">&amp;#123;</span><span class=\"symbol\">&amp;#125;</span>, <span class=\"symbol\">&amp;#123;</span>cache: true<span class=\"symbol\">&amp;#125;</span>) <span class=\"symbol\">&amp;#125;</span><span class=\"symbol\">&amp;#125;</span></span><br></pre></td></tr></table></figure></p>\n<p>更改为如下内容:</p>\n<p><figure class=\"highlight html\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br><span class=\"line\">4</span><br><span class=\"line\">5</span><br><span class=\"line\">6</span><br><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"tag\">&lt;<span class=\"name\">script</span> <span class=\"attr\">src</span>=<span class=\"string\">&quot;https://cdn.polyfill.io/v3/polyfill.js&quot;</span>&gt;</span><span class=\"tag\">&lt;/<span class=\"name\">script</span>&gt;</span></span><br><span class=\"line\"><span class=\"symbol\">&amp;#123;</span>%- if theme.advVendors.enable %<span class=\"symbol\">&amp;#125;</span></span><br><span class=\"line\">\t<span class=\"symbol\">&amp;#123;</span>% for i in _list_vendor_js() %<span class=\"symbol\">&amp;#125;</span></span><br><span class=\"line\">\t\t<span class=\"symbol\">&amp;#123;</span><span class=\"symbol\">&amp;#123;</span> _adv_vendor_js(i) <span class=\"symbol\">&amp;#125;</span><span class=\"symbol\">&amp;#125;</span></span><br><span class=\"line\">\t<span class=\"symbol\">&amp;#123;</span>% endfor %<span class=\"symbol\">&amp;#125;</span></span><br><span class=\"line\"><span class=\"symbol\">&amp;#123;</span>%- else %<span class=\"symbol\">&amp;#125;</span></span><br><span class=\"line\"><span class=\"symbol\">&amp;#123;</span><span class=\"symbol\">&amp;#123;</span> _vendor_js() <span class=\"symbol\">&amp;#125;</span><span class=\"symbol\">&amp;#125;</span></span><br><span class=\"line\"><span class=\"symbol\">&amp;#123;</span>%- endif %<span class=\"symbol\">&amp;#125;</span></span><br><span class=\"line\"><span class=\"symbol\">&amp;#123;</span><span class=\"symbol\">&amp;#123;</span> _js(&#x27;app.js&#x27;)<span class=\"symbol\">&amp;#125;</span><span class=\"symbol\">&amp;#125;</span></span><br><span class=\"line\"><span class=\"symbol\">&amp;#123;</span><span class=\"symbol\">&amp;#123;</span> partial(&#x27;_partials/third-party/baidu-analytics.njk&#x27;, <span class=\"symbol\">&amp;#123;</span><span class=\"symbol\">&amp;#125;</span>, <span class=\"symbol\">&amp;#123;</span>cache: true<spLine truncated
"tags": [
"极空间",
"Docker",