keep-alive + HTTP 파이프 라이닝으로 iOS 8에서 이미지 교환 문제를 해결하는 방법은 무엇입니까?


9

iOS8 이후로, 내가 관리하는 사이트는 이미지가 다른 이미지와 위치를 바꾸는 간헐적 인 문제를 겪고 있습니다. 이것은 여러 곳에서 언급되었지만 명백한 해결책은 없습니다.

https://discussions.apple.com/thread/6574663

http://tech.vg.no/2011/12/14/safari-on-ios-5-randomly-switches-images/

http://tech.vg.no/2012/02/01/safari-on-ios-5-randomly-switches-images-part-3/

그것은 과거 iOS5에서 문제가되었다는 것을 보여줍니다. 우리 서버는 파이프 라이닝과 연결 유지 기능으로 Lightspeed를 실행하고 있습니다. 서버 관리자가 파이프 라이닝이 요청 된 순서대로 자산을 반환하고 있음을 확인했습니다. 그는 keep-alive를 비활성화하면 문제가 해결 될 수 있지만 서버로드를 크게 증가시킬 수 있다고 언급했습니다.

모든 자산이 내용 길이를 올바르게 전달합니다.

나는 지금 이것에 대한 해결책을 찾기 위해 막 다른 골목에 있습니다. iOS를 사용하는 많은 사용자들에게 시작은 모든 사람에게 매우 좌절이었습니다.

Safari에 많은 변화가있는 iOS8의 도입으로 시작되었습니다. 8의 모든 릴리스에서 여전히 문제가 있습니다. 내가 말했듯이 간헐적이며 사용자는 '다른 사이트에 문제가 없음'으로 인해 우리를 비난하기 시작했습니다.

누군가 이것에 대해 밝힐 수 있는지 궁금했습니다. 다른 사람 이이 문제를 경험하거나 해결책을 찾았습니까?

여기 내 사이트로 연결되는 링크가 있습니다.


ServerFault David에 오신 것을 환영합니다.이 문제를 웹 사이트의 html로 좁힐 수 있습니까? 아니면 이것이 사파리 문제입니까? 테스트 할 iPhone이 없지만 어떤 이미지가 거래 장소인지 나타낼 수 있으므로 Droid (농담)를 소유 할만 큼 능숙하지 않은 사람이 문제를 재현 할 수 있습니까? 또한 휴대폰에 다른 브라우저를 설치하여 Safari 문제인지 또는 iOS 문제인지 확인하십시오.
MDMoore313

2
@BigHomie iOS8의 Safari에만 적용됩니다. Chrome에서 발생하지 않는 것 같습니다. 그리고 다른 플랫폼에서는 문제가 발생하지 않는 것 같습니다.
David

안녕 ! 실제 문제에 집중하는 데 도움이되는 많은 질문이 있습니다. Safari OS X에서 문제가 발생합니까? 시뮬레이터의 Safari iOS에서 문제가 발생합니까? 이미지에 대한 링크가 올바른지 또는 Safari의 캐시 문제인지 확인하기 위해 Safari 검사기 링크 를 열려고 했습니까 ? 이 질문들은 우리를 문제의 근원으로 이끌어야합니다.
DeadEye

@DeadEye iOS 8에서만 문제가 발생한다고 확신합니다. 시뮬레이터에서 발생하는지 웹 관리자가 비정상적으로 표시되지 않는지 확실하지 않습니다. 실제로 잘못된 이미지에도 불구하고 이미지는 올바른 파일 이름으로 돌아옵니다. 내 가장 큰 문제는 애플에 대한 레이더 보고서가 이유없이 닫히고 토론 포럼에 대한 모든 정보에도 불구하고 openradar가 아무런 활동을하지 않았다는 것입니다.
David

Safari iOS를 통해 교체 된 이미지의 이미지 경로로 직접 이동하려고하면 올바른 이미지입니까?
DeadEye

답변:


2

우리도이 문제가 있었고 우리를위한 해결책은 HTML의 모든 태그를 제거하고 대신 배경 속성과 함께 CSS 클래스를 사용하는 것이 었습니다. 예를 들면 다음과 같습니다.

.img_logo {
  background: url(../images/logo.png?v=20150427) no-repeat;
  width: 175px;
  height: 49px;
  display: block;
}

어색한 느낌이지만, 이것이 우리에게 문제를 해결 한 유일한 방법이었습니다. 한 가지 단점은 이미지의 "alt"를 제거해야하지만 필요한 경우 자바 스크립트로 해결할 수있을 것입니다.

도움이 되었기를 바랍니다!


2

방금 시작한 새로운 웹 사이트 에서이 문제를 다루고있었습니다. FF / Opera / Chrome 등에서는 모든 것이 좋아 보였지만 iOS8 이상에서는 MAJOR 이미지 교환 문제가있었습니다. 이 문제를보고하는 많은 사이트에서 Litespeed 웹 서버를 실행하는 것으로 나타났습니다. 나는 잠시 테스트하기 위해 Apache로 전환했으며, 웹 사이트는 정상적으로로드되었습니다. 내 호스트 (wiredtree.com, 우수한 서비스)와 Litespeed의 일부 구성 옵션을 살펴보고 다음 두 옵션을 비활성화했습니다.

  • 압축 활성화
  • 동적 압축 사용

이 두 가지를 비활성화 한 후 웹 사이트는 문제없이 정상적으로로드되었습니다. 약간의 성능 저하가 있었지만 확실히 가치가 있습니다.

처음에는 HTTP 파이프 라이닝을 효과적으로 비활성화하기 위해 keep-alive를 비활성화하려고 시도했지만 문제가 해결되지 않았습니다. 위의 내용은 내가 본 유일한 솔루션입니다.

잘하면 이것은 같은 문제를 다루는 누군가를 도울 수 있습니다!


1

답은 아니지만 문제를 해결하는 방법입니다.

  1. 프로덕션 웹 서버를 사용하는 앱의 개발 버전을 사용하여 자체적으로 문제를 재현하십시오. 당신이 그것을 덮고 있는지 확인하십시오.
  2. 웹 서버에 새 호스트 이름 / CNAME 항목과 해당 가상 호스트를 작성하거나 3 단계에 필요한 경우 별도의 포트에 별도의 HTTP 서버를 작성하십시오. 이것을 "테스트 HTTP 서버"라고합니다
  3. 테스트 / 개발 버전을이 새로운 HTTP 서버로 지정하고 문제를 재현하십시오. 이 작업을 수행 할 수있을 때까지 4 단계로 이동하지 마십시오!
  4. 이제이 테스트 HTTP 서버에서 리디렉션 또는 지능적 구성 (아파치 사용 가능)을 통해 연결 유지, 압축, https, 캐싱, 파이프 라이닝 및 기타 생각할 수있는 모든 것을 비활성화하십시오. 문제점을 재현하고이를 수행하는 모든 구성 튜플과 그렇지 않은 구성 튜플을 기록하십시오.
  5. Apahce와 Litespeed 서버를 교체하십시오. 다시 한 번, 좋은 sysadmin에게는 아주 사소한 것이어야합니다. ( 아헴 ). 문제를 재현하십시오.

5 단계를 통해 문제를 완전히 재현 할 수 있고 구성 변경 세트 나 서버 소프트웨어 변경으로 인해 차이가 생기지 않는 경우, 문제는 iOS이며 수행 할 수있는 작업이 없습니다. (그러나 이것은 가능하지 않습니다.)

그러나 Litespeed에 의존 하지 않는 구성 변경 세트가있는 경우 (즉, Apache에서도 발생) 해결 방법을 사용할 수 있습니다. BrowserMatch지시문을 사용 하여 특정 브라우저 세트를 감지하십시오. 이 세트 BrowserMatch 세트의 구성 매개 변수를 설정하십시오. IE 3.0 및 Netscape 브라우저에 이르기까지 이러한 종류의 예제를 찾을 수 있습니다.

문제가 Litespeed로 판명되면 위의 방법을 사용하여 Litespeed 지원으로 버그를 신고하십시오. 당신은 지원 비용을 지불하고 있습니까?


1

http / 2 프로토콜을 사용하면 제 문제를 해결 한 것으로 보입니다. 그러나이 문제에 대한 실제 수정 / 해결 방법이있을 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.