Site updated: 2023-07-01 14:06:53

This commit is contained in:
qinglong
2023-07-01 14:06:56 +08:00
parent 6920aad390
commit d059c7ccb3
169 changed files with 171 additions and 175 deletions

View File

@@ -25,9 +25,7 @@
<div class="note primary">
<p>该篇文章介绍了如何对 shoka 主题进行 jsdelivr 聚合拆分,以便使用国内镜像源和异步加载,从而优化网站速度。具体操作包括更改模板、注册 helper 和更改配置。其中,推荐使用 advVendors 配置,可自定义加载源和 js 文件名同时支持异步加载、pjax 刷新和 integrity 防 XXS 等特性。</p>
</div>
<p>众所周知jsdelivr 在国内的速度可以用慢的一批来形容<br />
而 shoka 主题使用了 jsdelivr 的 combine 功能加载第三方 js, 而 combine 在国内没有镜像源<br />
并且阻断了使用 CDN 并发加速的道路,本篇博文会将 jsdelivr 聚合拆分为几个独立的 js, 以便使用国内镜像源和异步加载。</p>
<p>众所周知jsdelivr 在国内的速度可以用慢的一批来形容而 shoka 主题使用了 jsdelivr 的 combine 功能加载第三方 js, 而 combine 在国内没有镜像源并且阻断了使用 CDN 并发加速的道路,本篇博文会将 jsdelivr 聚合拆分为几个独立的 js, 以便使用国内镜像源和异步加载。</p>
<div class="note info">
<p>此方案相较于本地化而言有较大速度优势,尤其在 CDN 并发加持下</p>
</div>
@@ -37,7 +35,7 @@
</ol>
<p>打开 <span class="red">shoka\layout_partials\layout.njk</span>,找到第 144 行左右:</p>
<figure class="highlight html"><figcaption data-lang="HTML"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>script</span> <span class="token attr-name">src</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>https://cdn.polyfill.io/v3/polyfill.js<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token script"></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>script</span><span class="token punctuation">></span></span></pre></td></tr><tr><td data-num="2"></td><td><pre>{{ _vendor_js() }}</pre></td></tr><tr><td data-num="3"></td><td><pre>{{ _js('app.js') }}</pre></td></tr><tr><td data-num="4"></td><td><pre>{{ partial('_partials/third-party/baidu-analytics.njk', {}, {cache: true}) }}</pre></td></tr></table></figure><p>更改为如下内容:</p>
<figure class="highlight html"><figcaption data-lang="HTML"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>script</span> <span class="token attr-name">src</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>https://cdn.polyfill.io/v3/polyfill.js<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token script"></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>script</span><span class="token punctuation">></span></span></pre></td></tr><tr><td data-num="2"></td><td><pre><span class="token comment"></span></pre></td></tr><tr><td data-num="5"></td><td><pre>{{ _vendor_js() }}</pre></td></tr><tr><td data-num="6"></td><td><pre><span class="token comment"></span></pre></td></tr><tr><td data-num="7"></td><td><pre>{{ _js('app.js')}}</pre></td></tr><tr><td data-num="8"></td><td><pre>{{ partial('_partials/third-party/baidu-analytics.njk', {}, {cache: true}) }}</pre></td></tr></table></figure><ol start="2">
<figure class="highlight html"><figcaption data-lang="HTML"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>script</span> <span class="token attr-name">src</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>https://cdn.polyfill.io/v3/polyfill.js<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token script"></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>script</span><span class="token punctuation">></span></span></pre></td></tr><tr><td data-num="2"></td><td><pre>{%- if theme.advVendors.enable %}</pre></td></tr><tr><td data-num="3"></td><td><pre> {% for i in _list_vendor_js() %}</pre></td></tr><tr><td data-num="4"></td><td><pre> {{ _adv_vendor_js(i) }}</pre></td></tr><tr><td data-num="5"></td><td><pre> {% endfor %}</pre></td></tr><tr><td data-num="6"></td><td><pre>{%- else %}</pre></td></tr><tr><td data-num="7"></td><td><pre>{{ _vendor_js() }}</pre></td></tr><tr><td data-num="8"></td><td><pre>{%- endif %}</pre></td></tr><tr><td data-num="9"></td><td><pre>{{ _js('app.js')}}</pre></td></tr><tr><td data-num="10"></td><td><pre>{{ partial('_partials/third-party/baidu-analytics.njk', {}, {cache: true}) }}</pre></td></tr></table></figure><ol start="2">
<li>注册 helper</li>
</ol>
<p>打开 <span class="red">shoka\scripts\helpers\asset.js</span>, 最后一行新建空行,增加如下内容:</p>