가능하다면 나는 PhpBB의 코드를 건드리지 않고 Apache의 URL 재 작성 엔진에 의존합니다.
PHPBB3에서 대부분의 정적 컨텐츠 (크기 기준)는 /assets/
서브 디렉토리에 있습니다.
그래서 경우 :
- 당신이 재 작성 가능 브라우저를 사용하고,
- 는
.htaccess
이 상당이 .htaccess
파일에
- 설치
mod_rewrite
또는 이에 상응하는,
을 활성화 넣을 수 있습니다.
이렇게하면 CDN을 매우 쉽게 활성화/비활성화 할 수 있으며 PhpBB의 코드 수정을 걱정하지 않아도됩니다.
"스타일"및 "테마"정적 파일과 동일합니다. 은입니다. 브라우저가 여전히 서버에 닿아 다른 사람에게 튕겨져있는 경우 약간의 성능 저하가 발생하지만 실제 파이프 라인을 사용하지 않는 브라우저는 실제 문제가 아닙니다. 또한 대부분의 경우 리다이렉트 된 리소스는 (적어도 잠시 동안) 서버에 다시 도달하지 않는 브라우저에 의해 "기억"됩니다.
예를 들어, NginX님께서는 을 출력 HTML으로 다시 작성합니다. 귀하의 사이트/정적에 대한 모든 참조가 HttpSubModule을 사용하여 anothersite/differentpath/static으로 이동하도록 만들 수 있습니다.
는 조심 일부 파일 힘이 더 이상 작동, 또는 상대 링크 그래서 다시 더 이상 작업을 재 작성의 범위를 벗어난 "가을 없다", 그리고 수도 있습니다 모두 절대 링크를 포함. 예 :
- 자바 스크립트 파일은 플러그인 및 유사한 기능에 대해 "delayed load"또는 "증분/조건부로드"를 사용합니다.
- 글꼴 및 배경 이미지에 대한 참조가 포함 된 CSS 파일 (
url(../../../path/...)
).당신이 페이지 속도을 지정한 이후
또한 그것은 HTML을 구문 분석하고 거기에 참조 된 자원을 압축하려고하기 때문에 mod_pagespeed
는, URL 재 작성의이 유형과 호환되지 않을 수 있습니다, 조심. 따라서 무거운 CSS는 모두 CDN 으로 오프로드되어 서버 대신 다운로드되어 여전히 mod_pagespeed 된 로컬 CSS 참조에서 최적화되고 압축되고 인식하기 어려운 형태로 포함됩니다.
즉, 귀하의 HTML에 당신은
<link href="/app/small.css" ... />
<link href="/static/big.css" ... />
<link href="/static/big2.css" ... />
을 가지고 있고 당신은 재 작성이 오프 사이트에서 정적의로드 얻을 것으로 기대합니다. 더 이상 최적화가 없다면 일어날 일입니다. 대신, 클라이언트는
<link href="/app/small+big+big2.css?pagespeed&whatever" />
을 말한다 mod_pagespeed
에 의해 다시 페이지를보고 그는 리디렉션하지 얻을 않을 것이다, /static
아무것도 요구하지 않습니다, 대신 요청을 받고보다 , 최적화, 압축하지만 여전히 큰 다운로드 '을 원하면 서버의 CSS를 병합하십시오.
이 상세한 답변으로 시간을내어 주셔서 감사합니다. 그러나 매우 도움이되지 않으며 phpBB의 변경 사항에 대한 내 질문에 답변하지 않습니다. 우리는 Apache를 사용하지 않으며 301 리디렉션은 서버 요청을하면서 올바른 리소스를 제공하는 것보다 결코 좋지 않습니다. HTML을 NginX로 다시 작성하는 것은 좋은 선택 일 수 있지만 많은 자원이 상대적이므로, 나는 완전히 그것을 스스로 파악하여 완전한 대답은 아닙니다. CSS : 수정 된 파일 이름으로 모든 파일을 하나의 정적 파일로 결합하는 것이 가장 좋았을 것입니다. 고마워요,하지만 여기에는 해결책이 없습니다. – Collector
설정을 단순화하고 적어도 페이지 스피드를 포기하지 않는 한 솔루션 *이 존재하는지 확신 할 수 없습니다. CORS 같은 다른 문제도 고려하지 않았습니다. 나는이 문제에 대해 좀 더 자세히 논의 할 것이다 ... – LSerni
물론 솔루션이 존재하고 PhpBB 코드를 변경하여 구현하기 시작했다. (필자의 질문에 쓴 것처럼). 그러나, 다른 사람들이 과거에 그 일을했을지도 모른다고 상상했듯이, 여기와 같은 질문으로 나 (그리고 나중에 읽는 다른 사람들)가 동일한 것을 다시 구현하는 데 많은 시간을 절약 할 수 있다고 생각했습니다. CORS와는 어떤 관계가 있습니까?!?! 결과 HTML을 다른 서버의 정적 리소스를 포함하도록 변경하기 만하면됩니다.도메인 X의 페이지에 도메인 Y의 JavaScript가 포함되어 있으면 도메인 X 내부에서 여전히 작동합니다. – Collector