从HTML文档智慧可重复使用的块IPFS

星际文件系统(IPFS)是BitTorrent的状协议的对等网络分布式Web。IPFS分裂大文件成小块。IPFS客户端可以从任何人IPFS网络上有确切的同一块块取出。

较早的对等网络实现像BitTorrent的安排围绕文件集对等群(“种子”),该交换块彼此。这意味着,对等体不不同种子之间相互交换数据,即使该数据块是相同的。上大块IPFS全局重复数据删除和交换。

我在一篇文章中讨论了如何IPFS存储文件更详细地了解如何IPFS托管服务收取高额费用重复块

目前IPFS使用基于大小的组块。文件被分割成256千字节块。通常,您不希望您的文件块是出于性能的考虑太少。它需要更多的时间和开销来下载更多块。

当您更改一个数据位它改变了一个文件块。然而,在该文件的开头添加一个单比特变化,每块由以来的整个文件的文件修改开始的偏移。

IPFS计划迁移到一个基于聪明滚动哈希分块在未来的版本。然而,我想讨论用更聪明的分块逻辑为HTML文档的可能性。

有些网页是由HTML文档文件加上资产,如样式,脚本和图像。载入这些外部资产比传统的HTTP / 1.1协议引入查找和传送等待时间开销的减少页面负荷性能。

从IPFS中获取文件和块比HTTP / 1.1更高的性能开销。大部分成本来自于参与定位同龄人谁拥有你想要的确切块的额外开销。

HTTP支持资产缓存,可以删除需要反复再次从同一服务器上获取同一资产。如上简述,IPFS块是全局重复数据删除。客户端可以缓存块,并重新使用它们几乎相同的方式HTTP缓存的工作。越多的同行共享块特定的更高的网络可用性得到。

随着时间的推移,Web开发人员开发了提高页面加载性能的最佳实践。一个这样的模式包括内联的关键资源。如阻止呈现的样式表和脚本。到HTML文档本身。这使得HTML文档更大,并随后访问页面并没有从这些资源在客户端已经被缓存中受益。

快速题外话:你通过HTTP / 2不应该内嵌的资源!使用服务器启动的推代替。

平均HTML文档不太可能超过256千字节。它可以舒适地适合在一个IPFS块。但是,你仍然需要获取额外的块来加载外部资源。这是我们可以做一些巧妙的与流行的是用HTTP / 1.1资源内联方法。yabo88软件下载

您可以在一个文件分割为任意点的文件块。例如。你可以放开后,立即分割你的HTML文档<风格>元素,立即再次关闭之前元件。在下面一个简单的例子,你最终用三个部分:HTML文档的顶部,可重复使用的样式块,然后将文档的其余部分。

<!DOCTYPE HTML>   实施例文档</ TITLE> <风格><span style="border-top:1px dotted blue;border-bottom:1px dotted blue;display:inline-block;width:100%;">车身颜色{:继承} {H1的text-align:左}</span></样式> </ HEAD> <BODY> <H1>实施例文档</ H1> </ BODY> </ HTML></code></pre>
       <figcaption>
        <p><small>与组块点的例子的HTML文档通过蓝色线表示。</small></p>
       </figcaption>
      </figure>
      <p>从IPFS的角度来看,从HTML页面内部的样式表块会产生一个块,这将是从保存在CSS文件相同的样式没有什么区别。这是同一块,你是否装入文件作为外部片或将其嵌入到文档本身。该块仍然可以在客户端进行缓存,并在所有的HTML文档重用。</p>
      <p>最重要的是,你的IPFS客户会更早发现块当它在文档比如果它首先需要获取HTML文档,然后部分发现外部依赖。</p>
      <p>您可以更改样式表不需要更改的文件块的其他两个块。(提醒:IPFS块是不可改变的。)已经被缓存和共享文档的旧版本的客户端仍然可以到更新版本的读者贡献可用块。</p>
      <p>这种方法可以从嵌入的数据的HTML文档等可重复使用的块中。嵌入式<code class="notranslate" translate="no">模板</code>,<code class="notranslate" translate="no">脚本</code>,<code class="notranslate" translate="no">风格</code>和<code class="notranslate" translate="no">SVG</code>元素是较好的选择。</p>
      <p>您也可以大块你周围的内容的文件,你希望经常更新。例如。分裂出一个相关的或最近的文章在自己的小部件块在博客上。</p>
      <p>你不想过分的分块,但是。过多或过少都会大块元气大伤性能。你还可以好好利用更小的块时,其节制,并在文件中适当的地方做。</p>
      <p>内联外部依赖性也很好的工作解决IPFS块寻址限制在IPFS的当前Web浏览器实现。你经常会遇到网页时,工作作风,图片,当你浏览IPFS分布式Web脚本。I’ll not go into details here, but let me just say that it was a bad idea to try to replace URLs — a cornerstone component of the web platform — with IPFS NURLs.</p>
      <p>这一切都只是在这个阶段一个非常有意思的概念。您可以实现自定义的通过在物体分块操作<code class="notranslate" translate="no">去-IPF问题</code>参考客户端。这并不容易,但它是可行的。更好的工具将需要为此等内容的边界感知分块策略,看看任何领养。</p>
     </div>
     <footer class="entry-footer">
      <aside class="entry-footer-support">
       <a aria-role="button" class="entry-footer-bmac" href="https://www.buymeacoffee.com/aleksandersen" rel="external"><span>我买咖啡</span></a>
      </aside>
      <p class="entry-footer-correction"><a href="mailto:correction+3c8ca800291e45bfb8a3e3fb456f131b@ctrl.blog?subject=Correction%20for%20%2Fentry%2Fipfs-html-chunks.html" title="报告错误/修正">报告错误/修正</a></p>
      <span>yabo88 app话题:</span>
      <ul class="andli scili">
       <li><a class="p-category" href="//www.tianyase1.com/topic/ipfs.html" rel="tag">IPFS</a></li>
       <li><a class="p-category" href="//www.tianyase1.com/topic/html.html" rel="tag">HTML</a></li>
       <li><a class="p-category" href="//www.tianyase1.com/topic/p2p.html" rel="tag">P2P</a></li>
       <li><a class="p-category" href="//www.tianyase1.com/topic/webperf.html" rel="tag">WebPerf</a></li>
      </ul>
     </footer>
    </article>
   </main>
   <aside class="doc-container recommendations">
    <div class="entrylist">
     <h3>相关阅读</h3>
     <article class="has-image">
      <a aria-labelledby="entry1" href="//www.tianyase1.com/entry/the-dweb.html" rel="related" tabindex="0">
       <picture>
        <source sizes="(min-width:920px) 192px, 96px" srcset="../media/hero/particle-network.96x54.avif 96w, ../media/hero/particle-network.192x108.avif 192w, ../media/hero/particle-network.288x162.avif 288w, ../media/hero/particle-network.384x216.avif 384w" type="image/avif">
        <source sizes="(min-width:920px) 192px, 96px" srcset="../media/hero/particle-network.96x54.webp 96w, ../media/hero/particle-network.192x108.webp 192w, ../media/hero/particle-network.288x162.webp 288w, ../media/hero/particle-network.384x216.webp 384w" type="image/webp">
        <source sizes="(min-width:920px) 192px, 96px" srcset="../media/hero/particle-network.96x54.jpeg 96w, ../media/hero/particle-network.192x108.jpeg 192w" type="image/jpeg">
        <img alt height="54" loading="lazy" src="//www.tianyase1.com/media/hero/particle-network.192x108.jpeg" style="background-color:rgb(2,32,59)" title="“Network Nodes”" type="image/jpeg" width="96">
       </picture>
       <header>
        <h4 id="entry1">我们为什么需要分布式网络</h4>
       </header></a>
     </article>
     <article class="has-image">
      <a aria-labelledby="entry2" href="//www.tianyase1.com/entry/ipfs-pin-storage-accounting.html" rel="related" tabindex="0">
       <picture>
        <source sizes="(min-width:920px) 192px, 96px" srcset="../media/hero/ledger-pinatacloud-eternum.96x54.avif 96w, ../media/hero/ledger-pinatacloud-eternum.192x108.avif 192w, ../media/hero/ledger-pinatacloud-eternum.288x162.avif 288w, ../media/hero/ledger-pinatacloud-eternum.384x216.avif 384w" type="image/avif">
        <source sizes="(min-width:920px) 192px, 96px" srcset="../media/hero/ledger-pinatacloud-eternum.96x54.webp 96w, ../media/hero/ledger-pinatacloud-eternum.192x108.webp 192w, ../media/hero/ledger-pinatacloud-eternum.288x162.webp 288w, ../media/hero/ledger-pinatacloud-eternum.384x216.webp 384w" type="image/webp">
        <source sizes="(min-width:920px) 192px, 96px" srcset="../media/hero/ledger-pinatacloud-eternum.96x54.jpeg 96w, ../media/hero/ledger-pinatacloud-eternum.192x108.jpeg 192w" type="image/jpeg">
        <img alt height="54" loading="lazy" src="//www.tianyase1.com/media/hero/ledger-pinatacloud-eternum.192x108.jpeg" style="background-color:rgb(211,196,183)" title="“Pinata and Eternum”" type="image/jpeg" width="96">
       </picture>
       <header>
        <h4 id="entry2">IPFS寄托服务,滥收费用的复制对象</h4>
       </header></a>
     </article>
     <article class="has-image">
      <a aria-labelledby="entry3" href="//www.tianyase1.com/entry/dnslink-ipns-top1m-websites.html" rel="related" tabindex="0">
       <picture>
        <source sizes="(min-width:920px) 192px, 96px" srcset="../media/hero/particle-network.96x54.avif 96w, ../media/hero/particle-network.192x108.avif 192w, ../media/hero/particle-network.288x162.avif 288w, ../media/hero/particle-network.384x216.avif 384w" type="image/avif">
        <source sizes="(min-width:920px) 192px, 96px" srcset="../media/hero/particle-network.96x54.webp 96w, ../media/hero/particle-network.192x108.webp 192w, ../media/hero/particle-network.288x162.webp 288w, ../media/hero/particle-network.384x216.webp 384w" type="image/webp">
        <source sizes="(min-width:920px) 192px, 96px" srcset="../media/hero/particle-network.96x54.jpeg 96w, ../media/hero/particle-network.192x108.jpeg 192w" type="image/jpeg">
        <img alt height="54" loading="lazy" src="//www.tianyase1.com/media/hero/particle-network.192x108.jpeg" style="background-color:rgb(2,32,59)" title="“Network Nodes”" type="image/jpeg" width="96">
       </picture>
       <header>
        <h4 id="entry3">DNSLink和强脉冲中子源的可用性调查</h4>
       </header></a>
     </article>
     <article class="has-image">
      <a aria-labelledby="entry4" href="//www.tianyase1.com/entry/ipfs-repo-cache-gc.html" rel="related" tabindex="0">
       <picture>
        <source sizes="(min-width:920px) 192px, 96px" srcset="../media/hero/ipfs-paper-garbage.96x54.avif 96w, ../media/hero/ipfs-paper-garbage.192x108.avif 192w, ../media/hero/ipfs-paper-garbage.288x162.avif 288w, ../media/hero/ipfs-paper-garbage.384x216.avif 384w" type="image/avif">
        <source sizes="(min-width:920px) 192px, 96px" srcset="../media/hero/ipfs-paper-garbage.96x54.webp 96w, ../media/hero/ipfs-paper-garbage.192x108.webp 192w, ../media/hero/ipfs-paper-garbage.288x162.webp 288w, ../media/hero/ipfs-paper-garbage.384x216.webp 384w" type="image/webp">
        <source sizes="(min-width:920px) 192px, 96px" srcset="../media/hero/ipfs-paper-garbage.96x54.jpeg 96w, ../media/hero/ipfs-paper-garbage.192x108.jpeg 192w" type="image/jpeg">
        <img alt height="54" loading="lazy" src="//www.tianyase1.com/media/hero/ipfs-paper-garbage.192x108.jpeg" style="background-color:rgb(160,158,163)" title="“IPFS Garbage”" type="image/jpeg" width="96">
       </picture>
       <header>
        <h4 id="entry4">什么时候IPFS”垃圾收集器清除缓存</h4>
       </header></a>
     </article>
    </div>
   </aside>
   <aside>
    <ins class="adsbygoogle" data-ad-client="ca-pub-1835247814769107" data-ad-format="horizontal" data-ad-slot="4696959042" data-full-width-responsive="true" style="display:block"></ins>
   </aside>
  </div>
  <footer id="page-footer">
   <div class="page-footer-promo">
    <form action="https://email.ctrl.blog/?subscribe" class="cta-email page-footer-cta" method="post">
     <input name="sub" type="hidden" value="海洋">
     <h6>得到Ctrl键博客每周电子邮件更新</h6>
     <div>
      <input aria-disabled="true" name="name" placeholder="Name" type="text" value>
      <input aria-label="Email address" name="email" placeholder="you@example.email" required type="email">
      <button type="submit">订阅</button>
     </div>
    </form>
    <ul class="page-footer-subscribe">
     <li><a href="https://twitter.com/CtrlBlog" rel="external me noopener" target="_blank" title="推特">推特</a></li>
     <li><a href="//www.tianyase1.com/subscribe.html">通讯</a></li>
     <li><a href="//www.tianyase1.com/feed/latest.atom" target="_blank" title="饲料" type="application/atom+xml">饲料</a></li>
     <li><a href="https://feedly.com/i/subscription/feed/https%3A%2F%2Ffeed.ctrl.blog%2Flatest.atom" rel="external noopener" target="_blank" title="资讯提供ly">资讯提供ly</a></li>
     <li><a href="https://newsblur.com/site/5241507/ctrl-blog" rel="external noopener" target="_blank" title="Newsblur">Newsblur</a></li>
    </ul>
   </div>
   <div aria-label="copyright notes" class="small-print" role="contentinfo">
    <div about="//www.tianyase1.com/media/hero/ipfs-chunks.svg" id="WebStatement=/media/hero/ipfs-chunks.svg" typeof="cc:Work schema:ImageObject">
     <span property="dc:rights">图片 ”<a href="//www.tianyase1.com/media/hero/ipfs-chunks.svg" property="schema:contentUrl" type="image/svg+xml"><span property="schema:name">大块IPFS</span></a>”(<a href="//www.tianyase1.com/entry/ipfs-html-chunks.html" rel="cc:attributionURL nofollow">归属链接</a>)由©<time datetime="2020-01-19"><span property="schema:copyrightYear">2020</span></time><span property="schema:copyrightHolder" resource="https://www.daniel.priv.no/" typeof="schema:Person"><a href="https://www.daniel.priv.no/" rel="external nofollow"><span property="cc:attributionName schema:name">yabo88软件下载</span></a></span>下的许可  <a href="https://creativecommons.org/licenses/by-sa/4.0/" rel="cc:license dc:license external license schema:license" title="CC BY-SA 4.0许可">CC BY-SA 4.0许可</a>。</span>
    </div>
    <div about="//www.tianyase1.com/entry/ipfs-html-chunks.html" typeof="cc:Work">
     <span about="#article-source-code-examples" property="dc:rigths">除非另有说明,本文中印刷源代码下的持牌<a href="https://creativecommons.org/publicdomain/zero/1.0/" rel="cc:license external license nofollow schema:license">CC0 1.0许可。</a></span>
     <span property="dc:rigths">按Ctrl博客由©<time datetime="2020" property="schema:copyrightYear">2020</time><span property="schema:copyrightHolder" resource="https://www.daniel.priv.no/" typeof="schema:Person"><a href="https://www.daniel.priv.no/" property="dc:creator" rel="external schema:sameAs schema:url"><span property="schema:name">yabo88软件下载</span></a>。</span></span>
    </div>
   </div>
   <nav>
    <ul>
     <li><a href="//www.tianyase1.com/about/">关于</a></li>
     <li><a href="//www.tianyase1.com/about/privacy-policy.html">隐私政策</a></li>
     <li><a href="//www.tianyase1.com/about/colophon.html">后记</a></li>
     <li><a href="//www.tianyase1.com/about/license.html">许可</a></li>
    </ul>
   </nav>
  </footer>
 </body>
</html>