2017-09-08 3 views
0

내 노드 사이트의 속도를 높이기 위해 Amazon의 CloudFront CDN을 설정하여 서버의 모든 정적 파일을 캐시합니다. src = "/ mysite.css"를 작성하는 대신 하위 도메인 별칭을 구성 했으므로 src = "https://cache.mysite.com/mysite.css"라고 쓸 수 있으며, src = "/ mysite.css"에서 css 파일을 가져옵니다. 클라우드, 내 서버 대신.환경에 따라 클라우드로의 상대 경로 토글 Node.js

내가 해결하려고하는 문제는 앞으로 내 사이트를 추가로 개발하고 테스트하기가 매우 어려울 것이기 때문에 모든 정적 파일을 클라우드로 직접 코딩하는 것을 원하지 않는다는 것입니다. 예를 들어 css 파일을 로컬에서 변경하고 로컬에서 테스트하려고하면 css 파일에 대한 링크가 로컬 복사본이 아닌 클라우드로 연결됩니다.

환경에 조건부로 URL을 다시 쓰는 방법을 생각하려고했습니다. ENV 파일을 사용하여 변수를 설정하는 방법이 있습니까? 그러면 변수가 모든 상대 URL 앞에 캐시 URL을 삽입하는 데 사용됩니다. 그렇지 않으면 링크를 비워 두어 링크가 상대적으로 유지됩니까?

+0

같은 모듈을 사용할 수 있습니다 그리고 당신은 모든 상대 경로를 사용할 수 있습니다. –

+0

처음에 내가 할 수 있다고 생각했지만 노드는 CloudFront에서 실행되지 않습니다. CloudFront는 JS, 이미지, CSS 등의 정적 파일 만 제공합니다. –

+0

올바르지 않습니다. 정적 또는 동적 인 사이트는 모두 CloudFront 뒤에 배치 할 수 있습니다. 경로 패턴을 사용하여 CloudFront에게 어떤 경로가 정적 저장소 (예 : S3)로 연결되고 어떤 경로가 앱 서버로 이동하는지 (사이트의 노드 코드는 계속 실행 됨) 알려줍니다. 내 사이트는'* .css' 및'* .png'와 같은 경로 패턴을 정적으로 가지며 기본 패턴'*'은 응용 프로그램으로 이동하여 쿠키와 쿼리 문자열을 전달합니다. 기본적으로 백엔드 ("오리진")의 잠재적으로 다른 위치로 이동하는 최대 25 개의 대상 ("경로 패턴"으로 "캐시 동작")을 가질 수 있습니다. –

답변

0

코드/템플릿에서 사용할 수있는 환경 변수를 얻으려면 process.env[documentation]이 있습니다.

또한 CloudFront를 통해 전체 사이트를 실행 dotenv 또는 config