문맥
프리랜서 개발자로 일하면서 종종 XSLT를 기반으로 웹 사이트를 만들었습니다. 즉, 모든 요청에 대해 페이지 내용에 대해 알아야하는 모든 내용 (현재 로그인 한 사용자 이름, 최상위 메뉴 항목,이 메뉴가 동적 / 구성 가능한 경우, 텍스트)을 포함하는 XML 파일이 생성됩니다. 페이지의 특정 영역 등에 표시됩니다. 그런 다음 XSL 프로세스 (캐시 등)를 HTML / XHTML 페이지로 처리하여 브라우저로 보냅니다.
특히 PHP를 사용하여 소규모 웹 사이트를보다 쉽게 만들 수 있다는 좋은 지적이 있습니다. 일종의 템플릿 엔진이지만 다른 템플릿 엔진을 선호합니다. 대부분의 템플릿 엔진보다 훨씬 강력하고 더 잘 알고 있기 때문에 다른 템플릿 엔진을 선호합니다. 필요할 경우 별도의 API를 만들 필요없이 자동 액세스를 위해 필요에 따라 원시 XML 데이터에 액세스 할 수도 있습니다.
물론, 캐싱 기술이 우수하더라도 XSL은 여전히 전체 웹 사이트 성능을 저하시키고 더 많은 CPU 서버 측을 필요로하기 때문에 중간 규모 또는 대규모 웹 사이트에서는 완전히 실패합니다.
질문
최신 브라우저는 XML 파일을 가져 와서 XML과 같이 선언 된 관련 XSL 파일로 변환 할 수 <?xml-stylesheet href="demo.xslt" type="text/xsl"?>있습니다. Firefox 3이 가능합니다. Internet Explorer 8도 가능합니다.
이는 XSL 처리를 사용자의 50 %를 위해 서버에서 클라이언트 측으로 마이그레이션 할 수 있음을 의미합니다 (이를 구현하려는 여러 웹 사이트의 브라우저 통계에 따라). 즉, 사용자의 50 %가 각 요청마다 XML 파일 만 수신하므로 서버 대역폭 (XML 파일은 처리 된 HTML 아날로그보다 훨씬 짧음)이 줄어들고 서버의 CPU 사용량이 줄어 듭니다.
이 기술의 단점은 무엇입니까?
여러 가지에 대해 생각했지만이 상황에는 적용되지 않습니다.
- 브라우저 요청에 따라 원시 XML을 전송하는시기와 대신 HTML로 변환 할시기를 선택하기가 어려운 구현 및 필요성. 분명히 시스템은 실제 시스템보다 훨씬 어렵지 않을 것입니다. 유일한 변경 사항은 모든 XML에 XSL 파일 링크를 추가하고 브라우저 검사를 추가하는 것입니다.
- XSLT 파일은 서버에 의해 캐시되지 않고 브라우저에 의해 다운로드되므로 더 많은 IO 및 대역폭 사용. XSLT 파일은 브라우저에 의해 캐시되기 때문에 (이미지, CSS 또는 JavaScript 파일이 실제로 캐시됩니다) 문제가 될 것이라고 생각하지 않습니다.
- 일부 브라우저에서 페이지를 저장할 때 발생할 수있는 문제와 같이 클라이언트 측의 일부 문제 일 수 있습니다.
- 코드 디버깅 어려움 : 표시되는 유일한 소스는 다운로드 한 XML이기 때문에 브라우저에서 실제로 사용중인 HTML 소스를 얻는 것은 불가능합니다. 반면에, 나는 클라이언트 측에서 HTML 코드를 거의 보지 않으며 대부분의 경우 직접 사용할 수 없습니다 (공백 제거).
ngx_http_xslt_module또는 4 가지 모두 문제인지는 정확하게 기억하지는 않지만 ). XSLT 2.0에 대한 클라이언트 측 지원이 더 낫습니다.