클라이언트 힌트가 돌아왔습니다! imgix 및 Vercel로 배포
4106 단어 clienthintsvercelimgixresponsive
클라이언트 힌트를 기억하십니까?
2014년 Google Chrome은 브라우저의 요청 헤더에서 이미지 너비와 DPR을 전달하는 흥미로운 방법인 모든 클라이언트 힌트를 제공했습니다. 이렇게 하면 이미지에 필요한 올바른 크기를 알 수 있으므로 반응형 이미지를 훨씬 쉽게 제공할 수 있습니다. 한 가지 문제를 제외하고... 보안 문제를 일으켜 2017년에 제거되었습니다. 기능 정책 설정으로 해결되었으며 이제 클라이언트 힌트를 다시 사용할 수 있습니다! 클라이언트 힌트에 대한 Google의 정보도 있습니다.
클라이언트 힌트는 현재 웹의 74%에 대해 작동합니다. 여전히 가치가 있습니까? 예! 일부 이전 연구를 살펴보면 Smashing Mag srcset에서 미리 결정된 이미지 중단점을 사용하는 것보다 대역폭을 19-32% 절약할 수 있다고 판단했습니다.
클라이언트 힌트 사용
클라이언트 힌트 사용을 지원하는 몇 가지 이미지 CDN이 있습니다. 저는 imgix에서 일하므로 자연스럽게 이 예제에 imgix를 사용하기로 선택했습니다. imgix는 API 기반의 이미지 관리, 최적화 및 전송 서비스입니다. imgix의 이미지와 함께 클라이언트 힌트를 사용하려면 해당 이미지에 ch=width, dpr
를 추가하기만 하면 됩니다. save-data
도 지원하지만 이 예에서는 사용하지 않습니다.
이 예에서는 클라이언트 힌트에 대해 ch=width,dpr
를 추가한 다음 Firefox 또는 Safari와 같이 지원하지 않는 브라우저에 대한 대체 크기 옵션으로 w=400
를 추가했습니다. sizes
를 추가하는 것도 중요합니다. 아래 내 예에서는 CSS를 사용하지 않으므로 이것이 내 이미지의 크기를 결정합니다.
<img src="https://imgix.tomdale.website/artsy/6.jpg?ch=width,dpr&w=400"
sizes="(min-width: 768px) 30vw, 100vw" />
데모를 살펴보겠습니다.
이 작업을 보여주기 위해 간단한 demo site을 만들었습니다. 클라이언트 힌트 때문에 이미지에 대한 모든 변경 사항이 순전히 발생하는지 확인하기 위해 최소한의 CSS로 이 사이트를 최대한 간단하게 만들려고 노력했다는 점에 유의하는 것이 중요합니다. 특정 이미지를 별도의 탭에서 단독으로 열면 웹 사이트에서 사용되는 것과 같은 크기로 나타나지 않습니다. 실제 사이트에 있을 때 클라이언트 힌트에 따라 크기만 조정됩니다.
9개의 예시 이미지를 포함시켰습니다. 각 이미지 코드는 다음과 같습니다.
<img src="https://imgix.tomdale.website/artsy/5.jpg?ch=width,dpr&w=400&ar=4:3&fit=crop&crop=faces,edges&auto=format,compress"
sizes="(min-width: 768px) 30vw, 100vw" />
Chrome과 같은 지원 브라우저에서는 브라우저가 768픽셀 이상인 경우 이미지가 브라우저 너비의 30%가 됩니다. 이보다 작아지면 각 이미지의 크기가 브라우저 너비의 100%로 조정됩니다. 이것은 진정한 동적 크기입니다. 이 브라우저의 크기를 조정하고 하드 새로고침을 수행할 때마다 네트워크 탭에서 이미지의 무게가 변경되는 것을 알 수 있습니다.
이상적으로는 클라이언트 힌트와 함께 srcset도 사용해야 합니다. Client Hints를 지원하지 않는 나머지 25%의 사용자에게 좋은 크기의 이미지를 제공하고 싶습니다. 이 데모에서는 이러한 이미지의 크기를 보여주는 데 집중하고 싶었기 때문에 그렇게 하지 않았습니다. 또한 이러한 이미지의 자르기 지점이 약간 변경되는 것을 알 수 있습니다. 이는 일부 imgix API를 사용하여 먼저 자동으로 얼굴을 자른 다음 얼굴이 없는 경우 대체 옵션으로 사진에서 눈에 띄는 개체를 자르기 때문입니다.
Vercel에 배포
저는 Vercel과 Netlify를 모두 사용하여 사이트를 배포하는 것을 즐깁니다. 둘 다 많은 이점이 있습니다. 이 예에서는 Vercel을 사용했습니다. 클라이언트 힌트가 작동하기 위해 필요한 중요한 항목은 기능 정책을 설정하는 것입니다. Vercel을 사용하면 vercel.json 파일을 추가하여 해당 정책을 설정할 수 있습니다. 내 데모를 위해 이것을 vercel.json 파일에 넣었습니다.
{
"routes": [
{
"src": "/*",
"headers": {
"Accept-CH": "DPR, Width, Viewport-Width",
"Feature-Policy": "ch-dpr https://imgix.tomdale.website 'self'; ch-width https://imgix.tomdale.website 'self'; ch-viewport-width https://imgix.tomdale.website 'self'"
}
}
]
}
이 작업을 수행하려면 해당 URL을 이미지에 사용 중인 URL로 변경해야 합니다. 그러나 클라이언트 힌트를 안전하게 제공하기 위해 추가하는 것은 그리 큰 노력이 아닙니다.
결론
클라이언트 힌트가 다시 작동하는 것을 보는 것이 좋습니다. 여전히 사용할 수 있는 100% 솔루션은 아니므로 다양한 이미지 중단점에 대해 srcsets를 설정하여 반응형 이미지 모범 사례를 따라야 합니다. 그러나 Client Hints는 완벽하게 반응하는 이미지를 제공하는 미래의 이상적인 솔루션이 될 것입니다. 다음은 이 프로젝트에 대한 링크Github Repo입니다. 다른 궁금한 점이 있으면 언제든지 문의해 주세요.
Reference
이 문제에 관하여(클라이언트 힌트가 돌아왔습니다! imgix 및 Vercel로 배포), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/daletom/client-hints-is-back-deploy-with-imgix-vercel-4abb
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
클라이언트 힌트 사용을 지원하는 몇 가지 이미지 CDN이 있습니다. 저는 imgix에서 일하므로 자연스럽게 이 예제에 imgix를 사용하기로 선택했습니다. imgix는 API 기반의 이미지 관리, 최적화 및 전송 서비스입니다. imgix의 이미지와 함께 클라이언트 힌트를 사용하려면 해당 이미지에
ch=width, dpr
를 추가하기만 하면 됩니다. save-data
도 지원하지만 이 예에서는 사용하지 않습니다.이 예에서는 클라이언트 힌트에 대해
ch=width,dpr
를 추가한 다음 Firefox 또는 Safari와 같이 지원하지 않는 브라우저에 대한 대체 크기 옵션으로 w=400
를 추가했습니다. sizes
를 추가하는 것도 중요합니다. 아래 내 예에서는 CSS를 사용하지 않으므로 이것이 내 이미지의 크기를 결정합니다.<img src="https://imgix.tomdale.website/artsy/6.jpg?ch=width,dpr&w=400"
sizes="(min-width: 768px) 30vw, 100vw" />
데모를 살펴보겠습니다.
이 작업을 보여주기 위해 간단한 demo site을 만들었습니다. 클라이언트 힌트 때문에 이미지에 대한 모든 변경 사항이 순전히 발생하는지 확인하기 위해 최소한의 CSS로 이 사이트를 최대한 간단하게 만들려고 노력했다는 점에 유의하는 것이 중요합니다. 특정 이미지를 별도의 탭에서 단독으로 열면 웹 사이트에서 사용되는 것과 같은 크기로 나타나지 않습니다. 실제 사이트에 있을 때 클라이언트 힌트에 따라 크기만 조정됩니다.
9개의 예시 이미지를 포함시켰습니다. 각 이미지 코드는 다음과 같습니다.
<img src="https://imgix.tomdale.website/artsy/5.jpg?ch=width,dpr&w=400&ar=4:3&fit=crop&crop=faces,edges&auto=format,compress"
sizes="(min-width: 768px) 30vw, 100vw" />
Chrome과 같은 지원 브라우저에서는 브라우저가 768픽셀 이상인 경우 이미지가 브라우저 너비의 30%가 됩니다. 이보다 작아지면 각 이미지의 크기가 브라우저 너비의 100%로 조정됩니다. 이것은 진정한 동적 크기입니다. 이 브라우저의 크기를 조정하고 하드 새로고침을 수행할 때마다 네트워크 탭에서 이미지의 무게가 변경되는 것을 알 수 있습니다.
이상적으로는 클라이언트 힌트와 함께 srcset도 사용해야 합니다. Client Hints를 지원하지 않는 나머지 25%의 사용자에게 좋은 크기의 이미지를 제공하고 싶습니다. 이 데모에서는 이러한 이미지의 크기를 보여주는 데 집중하고 싶었기 때문에 그렇게 하지 않았습니다. 또한 이러한 이미지의 자르기 지점이 약간 변경되는 것을 알 수 있습니다. 이는 일부 imgix API를 사용하여 먼저 자동으로 얼굴을 자른 다음 얼굴이 없는 경우 대체 옵션으로 사진에서 눈에 띄는 개체를 자르기 때문입니다.
Vercel에 배포
저는 Vercel과 Netlify를 모두 사용하여 사이트를 배포하는 것을 즐깁니다. 둘 다 많은 이점이 있습니다. 이 예에서는 Vercel을 사용했습니다. 클라이언트 힌트가 작동하기 위해 필요한 중요한 항목은 기능 정책을 설정하는 것입니다. Vercel을 사용하면 vercel.json 파일을 추가하여 해당 정책을 설정할 수 있습니다. 내 데모를 위해 이것을 vercel.json 파일에 넣었습니다.
{
"routes": [
{
"src": "/*",
"headers": {
"Accept-CH": "DPR, Width, Viewport-Width",
"Feature-Policy": "ch-dpr https://imgix.tomdale.website 'self'; ch-width https://imgix.tomdale.website 'self'; ch-viewport-width https://imgix.tomdale.website 'self'"
}
}
]
}
이 작업을 수행하려면 해당 URL을 이미지에 사용 중인 URL로 변경해야 합니다. 그러나 클라이언트 힌트를 안전하게 제공하기 위해 추가하는 것은 그리 큰 노력이 아닙니다.
결론
클라이언트 힌트가 다시 작동하는 것을 보는 것이 좋습니다. 여전히 사용할 수 있는 100% 솔루션은 아니므로 다양한 이미지 중단점에 대해 srcsets를 설정하여 반응형 이미지 모범 사례를 따라야 합니다. 그러나 Client Hints는 완벽하게 반응하는 이미지를 제공하는 미래의 이상적인 솔루션이 될 것입니다. 다음은 이 프로젝트에 대한 링크Github Repo입니다. 다른 궁금한 점이 있으면 언제든지 문의해 주세요.
Reference
이 문제에 관하여(클라이언트 힌트가 돌아왔습니다! imgix 및 Vercel로 배포), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/daletom/client-hints-is-back-deploy-with-imgix-vercel-4abb
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
<img src="https://imgix.tomdale.website/artsy/5.jpg?ch=width,dpr&w=400&ar=4:3&fit=crop&crop=faces,edges&auto=format,compress"
sizes="(min-width: 768px) 30vw, 100vw" />
저는 Vercel과 Netlify를 모두 사용하여 사이트를 배포하는 것을 즐깁니다. 둘 다 많은 이점이 있습니다. 이 예에서는 Vercel을 사용했습니다. 클라이언트 힌트가 작동하기 위해 필요한 중요한 항목은 기능 정책을 설정하는 것입니다. Vercel을 사용하면 vercel.json 파일을 추가하여 해당 정책을 설정할 수 있습니다. 내 데모를 위해 이것을 vercel.json 파일에 넣었습니다.
{
"routes": [
{
"src": "/*",
"headers": {
"Accept-CH": "DPR, Width, Viewport-Width",
"Feature-Policy": "ch-dpr https://imgix.tomdale.website 'self'; ch-width https://imgix.tomdale.website 'self'; ch-viewport-width https://imgix.tomdale.website 'self'"
}
}
]
}
이 작업을 수행하려면 해당 URL을 이미지에 사용 중인 URL로 변경해야 합니다. 그러나 클라이언트 힌트를 안전하게 제공하기 위해 추가하는 것은 그리 큰 노력이 아닙니다.
결론
클라이언트 힌트가 다시 작동하는 것을 보는 것이 좋습니다. 여전히 사용할 수 있는 100% 솔루션은 아니므로 다양한 이미지 중단점에 대해 srcsets를 설정하여 반응형 이미지 모범 사례를 따라야 합니다. 그러나 Client Hints는 완벽하게 반응하는 이미지를 제공하는 미래의 이상적인 솔루션이 될 것입니다. 다음은 이 프로젝트에 대한 링크Github Repo입니다. 다른 궁금한 점이 있으면 언제든지 문의해 주세요.
Reference
이 문제에 관하여(클라이언트 힌트가 돌아왔습니다! imgix 및 Vercel로 배포), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/daletom/client-hints-is-back-deploy-with-imgix-vercel-4abb
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(클라이언트 힌트가 돌아왔습니다! imgix 및 Vercel로 배포), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/daletom/client-hints-is-back-deploy-with-imgix-vercel-4abb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)