検索

インラインSVG ...キャッシュ

インラインアイコンを使用すると、最高のアイコンシステムが作成されると書きました。私はまだそれが本当だと思います。アイコンをページにドロップする最も簡単な方法です。ネットワークリクエストはなく、完全に様式的です。

しかし、コードを挿入するにはいくつかの欠点がありますが、その1つはキャッシュを利用しないことです。ブラウザを読み取り、同じコードを何度も何度も処理しています。それほど大したことではありません。揚げるにははるかに大きなパフォーマンスの魚がありますよね?しかし、より効率的なパターンについて考えるのはまだ楽しいです。

Scott Jehlは、あなたが何かをインラインにしたからといって、あなたがそれをキャッシュできないという意味ではないと書いています。 ScottのアイデアがSVGアイコンに拡張できるかどうかを見てみましょう。

インラインSVGから始めます

このような…

 



  <title> inline svg </title>
  <link rel="styleSheet" href="/styles/style.css">




  ...
 
  <svg width="24" height="24" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
    <path d="M11.5,22C11.64,22 11.77,22 11.9,21.96C12.55,21.82 13.09,21.38 13.34,20.78C13.44,20,20.54 13.5,20.27 13.5,20H9.5A2,2 0 11.5,22M18,10.5C18,7.43 15.86,4.86 13,4.18V3.5A1.5,1.5 0 0,0 11.5,2A1.5,1.5 0,0 10,3.5V4.18C7.13,4.86 5,7.43.43.43.43 5,10.5V16L3,18V19H20V18L18,16M19.97,10H21.97C21.82,6.79 20.24,3.97 17.85,2.15L16.42,3.58C18.46,5 19.82,7.35 19.97,10m6.58,3.58L5.15,2.15C2.76,3.97 1.18,6.79 1,10H3C3.18,7.35 4.54,5 6.58,3.58Z "> </path>
  </svg>

ファイルとしてテキストをブラウザキャッシュに投げるのは奇妙に簡単です

上記のHTMLでは、Selector .Icon-AlarmがそのアイコンのSVGのチャンク全体をフェッチします。

 const iconhtml = document.querySelector( "。ICON-ALARM")。

次に、このようにブラウザのキャッシュに輝くことができます。

 if(windowの「キャッシュ」){
  caches.open( 'static')。then(function(cache){
    cache.put( "/icons/icon-wheelchair.svg"、new Response(
      iconhtml、
      {headers:{'content-type': 'image/svg xml'}}
    ));
  }
}

ファイルpath /icons/icon-wheelchair.svgを参照してください。それはちょっと構成されています。しかし、それは本当にその場所のキャッシュに入れられます。

要求されたときにブラウザがキャッシュからファイルを出力することを確認しましょう

ページにサービスワーカーを登録します。

 if(navigator.serviceworker){   
  navigator.serviceworker.register( '/sw.js'、{
    スコープ: '/'
  });
}

サービスワーカー自体は非常に小さく、キャッシュマッチャーだけです。

 self.addeventlistener( "fetch"、event => {
  request = event.request;

  event.respondwith(
    caches.match(request).then(response => {
      返信応答|| fetch(request);
    })
  );
});

しかし…アイコンはインラインなので、そのファイルを要求することはありません。

真実。しかし、他のページがそのキャッシュの恩恵を受けた場合はどうなりますか?たとえば、SVGアイコンは次のようなページに配置できます。

 <svg>
  <xlink></xlink> 
</svg>

/icons/icon-alarm.svgはキャッシュで準備ができているため、ブラウザはキャッシュから喜んでそれを取り出して表示します。

(私はこれが機能することにちょっと驚きました。エッジはファイルにリンクする要素が好きではありませんが、それはすぐに終わります。更新、それは終わった、エッジはクロムになりました。)

また、ファイルがキャッシュにない場合でも、ファイルシステム上のこのファイルを実際にチャックしていると仮定すると、ある種の「include」の結果が表示されます(デモでnunjucksを使用しました)。

しかし、…およびインラインSVGはまったく同じではありません

真実。私が上記で気に入っているのは、それがキャッシュを利用していることであり、アイコンがすぐに近くにレンダリングする必要があることです。また、このようにスタイルを整えることができるものがいくつかあります。たとえば、親アイコンに塗りつぶしを設定すると、がSVG要素を作成および色付けするシャドウドムを通過する必要があります。

それでも、それは同じではありません。シャドウドムは、インラインSVGと比較して大きな障壁です。

だから、それらを強化してください!各SVGアイコンを見つけ、必要なSVGのAjaxsを見つけ、のものを置き換えるスクリプトを非同期的にロードできます…

 const icons = document.queryselectorall( "svg.icon");

icons.foreach(icon => {
  const url = icon.queryselector( "use")。getattribute( "xlink:href"); // HREFも探したいかもしれません
  フェッチ(url)
    .then(response => respons.text())
    .then(data => {
      //これはおそらく少しレイアウトスラッシュです。私より賢い人はおそらくそれを修正することができました。

      // <svg> <suse> </suse></svg>をインラインSVGに置き換えます
      const newel = document.createelement( "span");
      newel.innerhtml = data;
      icon.parentnode.replacechild(newel、icon);

      // <span> sを削除します
      const parent = newel.parentnode;
      while(newel.firstchild)parent.insertbefore(newel.firstchild、newel);
      parent.RemoveChild(Newel);
    });
});</span>

このJavaScriptが正しく実行されると仮定すると、このページには元のページと同じようにインラインSVGが利用可能になります。

デモ&レポ

  • netlifyのデモ
  • Githubのレポ

以上がインラインSVG ...キャッシュの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
アンカーポジショニングは、ソースの順序を気にしませんアンカーポジショニングは、ソースの順序を気にしませんApr 29, 2025 am 09:37 AM

アンカーの位置決めがHTMLソースの順序を避けているという事実は、コンテンツとプレゼンテーションの間の懸念の別の分離のため、非常にCSS-Yです。

マージンは何ですか:40px 100px 120px 80pxは意味しますか?マージンは何ですか:40px 100px 120px 80pxは意味しますか?Apr 28, 2025 pm 05:31 PM

記事では、CSSマージンプロパティ、特に「マージン:40px 100px 120px 80px」、そのアプリケーション、およびWebページレイアウトへの影響について説明します。

さまざまなCSSボーダープロパティとは何ですか?さまざまなCSSボーダープロパティとは何ですか?Apr 28, 2025 pm 05:30 PM

この記事では、カスタマイズ、ベストプラクティス、および応答性に焦点を当てたCSSボーダープロパティについて説明します。主な議論:Border-Radiusは、レスポンシブデザインに最も効果的です。

CSSの背景とは何ですか、プロパティをリストしますか?CSSの背景とは何ですか、プロパティをリストしますか?Apr 28, 2025 pm 05:29 PM

この記事では、CSSのバックグラウンドプロパティ、Webサイトの設計の強化における使用、および避けるべき一般的な間違いについて説明します。重要な焦点は、バックグラウンドサイズを使用したレスポンシブデザインです。

CSS HSLの色とは何ですか?CSS HSLの色とは何ですか?Apr 28, 2025 pm 05:28 PM

記事では、CSS HSLの色、Webデザインでの使用、およびRGBよりも利点について説明します。主な焦点は、直感的な色の操作を通じて設計とアクセシビリティを向上させることです。

CSSにコメントを追加するにはどうすればよいですか?CSSにコメントを追加するにはどうすればよいですか?Apr 28, 2025 pm 05:27 PM

この記事では、CSSでのコメントの使用について説明し、シングルラインとマルチラインのコメント構文を詳述しています。コメントはコードの読みやすさ、保守性、コラボレーションを強化するが、適切に管理されていないとウェブサイトのパフォーマンスに影響を与える可能性があると主張しています。

CSSセレクターとは何ですか?CSSセレクターとは何ですか?Apr 28, 2025 pm 05:26 PM

この記事では、HTML要素のスタイリングのCSSセレクター、その種類、および使用法について説明します。 IDとクラスのセレクターを比較し、複雑なセレクターでパフォーマンスの問題に対処します。

どのタイプのCSSが最優先事項を保持していますか?どのタイプのCSSが最優先事項を保持していますか?Apr 28, 2025 pm 05:25 PM

この記事では、CSSの優先順位について説明し、特異性が最も高いインラインスタイルに焦点を当てています。 CSS競合を管理するための特異性レベル、オーバーライド方法、およびデバッグツールを説明します。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません