인라인
그러나 인라인 코드에는 몇 가지 단점이 있으며 그 중 하나는 캐싱을 이용하지 않는다는 것입니다. 브라우저를 읽고 찾아 볼 때 동일한 코드를 읽고 처리하고 있습니다. 그렇게 큰 거래는 아닙니다. 튀길 수있는 훨씬 더 큰 공연 물고기가 있습니다. 그러나 더 효율적인 패턴에 대해 생각하는 것은 여전히 재미 있습니다.
Scott Jehl은 당신이 무언가를 인화한다고해서 캐시 할 수 없다는 것을 의미하지는 않습니다. Scott의 아이디어가 SVG 아이콘으로 확장 될 수 있는지 봅시다.
인라인 SVG로 시작합니다
이와 같이…
<title> 인라인 svg </title> <link rel="스타일" href="/styles/style.css"> ... <svg width="24" height="24" viewbox="0 24 24" xmlns="http://www.w3.org/2000/svg"> </svg>
파일로서 브라우저 캐시에 텍스트를 버리기가 이상하게 쉽습니다.
위의 HTML에서, 선택기 .ICON- 알람은 해당 아이콘에 대한 SVG의 전체 덩어리를 가져올 것이다.
const iconhtml = docum
그런 다음 다음과 같은 브라우저의 캐시에 넣을 수 있습니다.
if (창에서 "캐시") { Caches.open ( 'static'). Cache.put ( "/Icons/Icon-Wheelchair.svg", 새 응답 ( iconhtml, {헤더 : { 'content-type': 'image/svg xml'}}} )); } }
파일 Path /icons/icon-wheelchair.svg를 참조하십시오. 그것은 방금 만들어졌습니다. 그러나 실제로 해당 위치의 캐시에 넣을 것입니다.
요청시 캐시에서 브라우저가 해당 파일을 가져 오는지 확인합시다.
페이지에 서비스 작업자를 등록하겠습니다.
if (navigator.serviceworker) { navigator.serviceworker.register ( '/sw.js', { 범위 : '/' }); }
서비스 작업자 자체는 캐시 매칭 자일뿐입니다.
self.addeventListener ( "fetch", event => { 요청 = event.request; event.respondwith ( caches.match (request). 반환 응답 || 페치 (요청); }) ); });
그러나… 아이콘이 인라인이기 때문에 우리는 해당 파일을 요청하지 않습니다.
진실. 그러나 다른 페이지가 해당 캐시의 혜택을 받으면 어떻게됩니까? 예를 들어, SVG 아이콘은 다음과 같이 페이지에 배치 할 수 있습니다.
<svg> <xlink : href="/icons/icon-alarm.svg#Icon-Alarm"></xlink> </svg>
/icons/icon-alarm.svg가 캐시에 준비되어 있기 때문에 브라우저는 행복하게 캐시에서 뽑아서 표시합니다.
(나는이 작품에 놀랐습니다. Edge는 파일에 링크하는
파일이 캐시에 없어도 파일 시스템 에서이 파일을 실제로 chuck한다고 가정 할 때 어떤 종류의 "포함"의 결과 (데모에 nunjucks를 사용했습니다).
그러나… 그리고 인라인 SVG는 그다지 같지 않습니다
진실. 위의 내용은 캐시를 사용하고 아이콘이 즉시 가깝게 렌더링해야한다는 것입니다. 예를 들어, 부모 아이콘의 채우기를 설정하면
그럼에도 불구하고, 그것은 동일하지 않습니다. Shadow Dom은 인라인 SVG에 비해 큰 장벽입니다.
그래서 그들을 향상시킵니다! 우리는 각 svg 아이콘, 필요한 svg에 대한 ajax를 찾는 스크립트를 비동기로로드하고
CONRD ICONS = DOCUTED.QUERYSELECTERALL ( "SVG.ICON"); Icons.foreach (icon => { const url = icon.querySelector ( "use"). getAttribute ( "xlink : href"); // href도 찾고 싶을 수도 있습니다 페치 (URL) . then (response => response.text ()) . 그런데 (data => { // 이것은 아마도 약간 레이아웃 스래쉬 일 것입니다. 나보다 똑똑한 사람은 아마 그것을 고칠 수있었습니다. // <svg> <use> </use></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); 부모님 removechild (Newel); }); });</span>
이제이 JavaScript가 올바르게 실행된다고 가정하면이 페이지에는 원래 페이지와 마찬가지로 Inline SVG를 사용할 수 있습니다.
데모 & 리포
- NetLify의 데모
- github에 대한 리포
위 내용은 인라인 svg ... 캐시의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

앵커 포지셔닝이 HTML 소스 순서를 철회한다는 사실은 컨텐츠와 프리젠 테이션 사이의 또 다른 문제가있는 또 다른 분리 때문에 CSS-Y이기 때문입니다.

기사는 CSS 마진 속성, 특히 "마진 : 40px 100px 120px 80px", 응용 프로그램 및 웹 페이지 레이아웃에 미치는 영향에 대해 설명합니다.

이 기사에서는 CSS 국경 속성에 대해 설명하고 사용자 정의, 모범 사례 및 응답성에 중점을 둡니다. 주요 인수 : Border-Radius는 반응 형 디자인에 가장 효과적입니다.

이 기사에서는 CSS 배경 속성, 웹 사이트 디자인 향상에 대한 사용 및 피하는 일반적인 실수에 대해 설명합니다. 주요 초점은 배경 크기를 사용한 반응 형 디자인에 중점을 둡니다.

기사는 CSS HSL 색상, 웹 디자인에서의 사용 및 RGB의 장점에 대해 설명합니다. 주요 초점은 직관적 인 색상 조작을 통해 설계 및 접근성을 향상시키는 데 있습니다.

이 기사는 CSS의 주석 사용에 대해 논의하고 단일 라인 및 멀티 라인 주석 구문을 자세히 설명합니다. 의견은 코드 가독성, 유지 관리 및 협업을 향상 시키지만 제대로 관리하지 않으면 웹 사이트 성능에 영향을 줄 수 있다고 주장합니다.

이 기사는 CSS 선택기, 유형 및 HTML 요소 스타일링을위한 사용법에 대해 설명합니다. ID와 클래스 선택기를 비교하고 복잡한 선택기의 성능 문제를 해결합니다.

이 기사는 CSS 우선 순위에 대해 논의하며, 가장 높은 특이성을 가진 인라인 스타일에 중점을 둡니다. CSS 충돌 관리를위한 특이성 수준, 재정의 방법 및 디버깅 도구를 설명합니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

Eclipse용 SAP NetWeaver 서버 어댑터
Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

SecList
SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음
