2014-09-23 1 views
3

phpBB에는 많은 정적 리소스가 있으며 동적 포럼의 서버가 아닌 다른 서버에서 제공하면 성능이 크게 향상 될 수 있습니다. 우리는 만료 헤더를 미래에 설정하고 향후 CDN을 활용할 수 있습니다.다른 서버에서 phpBB 정적 리소스를 제공 하시겠습니까?

지금까지 수행 한 검사에서 functions.php을 변경하면 다른 기본 디렉토리를 나타낼 수 있습니다. 이 같은 경로로 업로드 디렉토리에 액세스 할 수 없게 만드는 다른 의미가 서버에 로컬 보일 수있다 경우 코드

$web_path = '//some.new.domain/path'/*(defined('PHPBB_USE_BOARD_URL_PATH') && PHPBB_USE_BOARD_URL_PATH) ? $board_url : $phpbb_root_path*/; 

그러나, 그것은 나에게 불분명하다. 또한 styles.php를 사용하여 동적 CSS 생성을 해결하지 못합니다.

phpBB 코드를 변경하지 않고 정적 리소스에 대한 변경 사항을 빠르게 표시 할 수 있습니까?

답변

1

가능하다면 나는 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를 병합하십시오.

+0

이 상세한 답변으로 시간을내어 주셔서 감사합니다. 그러나 매우 도움이되지 않으며 phpBB의 변경 사항에 대한 내 질문에 답변하지 않습니다. 우리는 Apache를 사용하지 않으며 301 리디렉션은 서버 요청을하면서 올바른 리소스를 제공하는 것보다 결코 좋지 않습니다. HTML을 NginX로 다시 작성하는 것은 좋은 선택 일 수 있지만 많은 자원이 상대적이므로, 나는 완전히 그것을 스스로 파악하여 완전한 대답은 아닙니다. CSS : 수정 된 파일 이름으로 모든 파일을 하나의 정적 파일로 결합하는 것이 가장 좋았을 것입니다. 고마워요,하지만 여기에는 해결책이 없습니다. – Collector

+0

설정을 단순화하고 적어도 페이지 스피드를 포기하지 않는 한 솔루션 *이 존재하는지 확신 할 수 없습니다. CORS 같은 다른 문제도 고려하지 않았습니다. 나는이 문제에 대해 좀 더 자세히 논의 할 것이다 ... – LSerni

+0

물론 솔루션이 존재하고 PhpBB 코드를 변경하여 구현하기 시작했다. (필자의 질문에 쓴 것처럼). 그러나, 다른 사람들이 과거에 그 일을했을지도 모른다고 상상했듯이, 여기와 같은 질문으로 나 (그리고 나중에 읽는 다른 사람들)가 동일한 것을 다시 구현하는 데 많은 시간을 절약 할 수 있다고 생각했습니다. CORS와는 어떤 관계가 있습니까?!?! 결과 HTML을 다른 서버의 정적 리소스를 포함하도록 변경하기 만하면됩니다.도메인 X의 페이지에 도메인 Y의 JavaScript가 포함되어 있으면 도메인 X 내부에서 여전히 작동합니다. – Collector

0

질문의 날짜를 고려하여 이미 phpBB 3.1을 사용하고 있다고 가정합니다. 원하는 경우 phpBB 코드를 그대로 유지하고 포럼 업그레이드를 방해하지 않는 확장 프로그램을 작성할 수 있습니다. 그렇지 않은 경우 코드 수정 또는 문제 해결 방법으로 인해 어려움을 겪을 수 있습니다.

3.1의 경우 page_header() 기능의 끝에서 실행되는 'core.page_header_after'이벤트에 플러그 인하는 플러그인을 작성해야합니다. 이렇게하면 헤더에 작성된 모든 템플릿 변수를 덮어 쓰고 템플릿에서 다른 템플릿 변수를 사용하려면 새 템플릿 변수를 추가 할 수 있습니다.

귀하의 경우 이러한 변수를 지정해야합니다. 위의 예에서 이미 당신이 정적 파일을 제공하고자하는 곳에서 도메인의 URL로 채워질 수있는 forum_static_url 변수와의 phpBB의 일반적인 URL을 교체 한 것을

'T_ASSETS_PATH'   => "{$forum_static_url}assets", 
'T_THEME_PATH'   => "{$forum_static_url}styles/" . rawurlencode($this->user->style['style_path']) . '/theme', 
'T_TEMPLATE_PATH'  => "{$forum_static_url}styles/" . rawurlencode($this->user->style['style_path']) . '/template', 
'T_SUPER_TEMPLATE_PATH' => "{$forum_static_url}styles/" . rawurlencode($this->user->style['style_path']) . '/template', 
'T_IMAGES_PATH'   => "{$forum_static_url}images/", 
'T_SMILIES_PATH'  => "{$forum_static_url}{$this->config['smilies_path']}/", 
'T_AVATAR_PATH'   => "{$forum_static_url}{$this->config['avatar_path']}/", 
'T_AVATAR_GALLERY_PATH' => "{$forum_static_url}{$this->config['avatar_gallery_path']}/", 
'T_ICONS_PATH'   => "{$forum_static_url}{$this->config['icons_path']}/", 
'T_RANKS_PATH'   => "{$forum_static_url}{$this->config['ranks_path']}/", 

참고.

이 정보가 도움이되기를 바랍니다. phpBB3.1에서 이미 무료로 사용할 수있는 몇 가지 확장 기능을 살펴보고이 간단한 확장 기능을 구현하는 방법을 찾으십시오.

관련 문제