Enable a CDN for your Discourse

즉, 파일이 제 시스템과 동기화되지 않고 CloudFront는 단순히 캐시만 한다는 뜻인가요? 맞나요?

3개의 좋아요

네, 맞습니다. CDN은 요청된 자산만 사이트에서 가져옵니다.

Discourse는 정적 자산(css와 javascript 등)과 업로드된 파일도 S3로 전송합니다.

4개의 좋아요

Cloudflare 규칙을 사용하여 CSS와 JavaScript와 같은 정적 자산을 캐싱할 수 있을까요?

2개의 좋아요

네, 저희도 그렇게 사용하고 있으며 잘 작동합니다. 다만 자바스크립트 최적화를 반드시 비활성화하는 데 매우 주의하셔야 합니다. 저희 설정은 여기서 확인하실 수 있습니다:

4개의 좋아요

답변 감사합니다.

두 번째와 세 번째 규칙은 이미 추가했지만, 첫 번째 규칙은 이해가 되지 않습니다. 301 리디렉션이 왜 필요한가요?

2개의 좋아요

필요 없어요. 설명에 나와 있어요.

3개의 좋아요

답변 감사합니다. css와 javascript 같은 정적 자산은 어떻게 처리하나요? css와 javascript에 적용할 수 있는 규칙이 있을까요?

2개의 좋아요

그 부분은 테스트해 보지 않았습니다. 그게 제대로 동작할지 확신할 수 없습니다. 최소한 재빌드할 때마다 Cloudflare 캐시를 비워야 할 것입니다.

2개의 좋아요

모든 재빌드 후 캐시를 지우는 것은 괜찮습니다. https://myforum.com/assets/의 모든 것을 캐싱하도록 규칙을 만들면 다른 문제가 생길 수 있을까요? 이 규칙이 사용자 로그인에 영향을 미칠까요? 동의해 주시면 일주일 동안 테스트해 보고 결과를 보고하겠습니다. 아직 사용하지 않은 규칙이 하나 남아 있습니다.

2개의 좋아요

정리하자면, Cloudflare CDN을 사용하는 경우 이 필드(그리고 CDN URL)를 사용하지 않는 것이 맞나요?

문서에 따라 app.yml에 cloudflare.template을 설정했습니다.

Cloudflare을 사용할 경우 추가 설정이 필요한가요?

1개의 좋아요

StackPath를 CDN으로 성공적으로 사용했습니다. 예상대로 잘 작동합니다!

2개의 좋아요

현재에도 여전히 그런가요?

2019년:

Cloudflare의 이점을 일부 잃게 되므로 특별히 주의해야 하는 것 같습니다.

2020년:

2021년:

그렇다면, 현재 Cloudflare는 Discourse와 함께 신뢰할 수 있고 효율적인가요? “Rocket Loader” 기능을 비활성화하면 이점이 줄어드는 것인가요?

Stackpath에서 Bunny CDN으로 이전하는 것을 고려하고 있었는데, 제 포럼 도메인의 소유자이자 전 관리자(참고로 tinyURL의 소유자이기도 합니다)가 Cloudflare 엔터프라이즈 계정을 보유하고 있어, 해당 계정에 도메인을 무료로 추가할 수 있다고 합니다(Looking for a decrease in the forum fees in the future - #6 by Gilby - Forum Feedback - Unicyclist.com).

따라서 Bunny CDN 대신 Cloudflare를 사용하는 것이 올바른지, 문제가 없는지, 그리고 효과적인지 궁금합니다.

2개의 좋아요

이미지 중심의 서비스라면, 직접 연결된 SSD 용량을 늘리는 데 드는 비용은 동등한 S3 비용보다 훨씬 비쌉니다.

S3는 비용 효율성을 위해 앞에 CDN이 필요합니다. 이는 입출력(ingress/egress)에 대해 요금이 부과되기 때문이지만, 여전히 고속 SSD를 단순히 추가하는 것보다 훨씬 저렴합니다. CloudFlare를 S3 앞에 배치할 수 있지만, 신뢰할 수 있는 기능은 사실상 에셋 캐싱뿐입니다. CloudFlare를 클라이언트와 애플리케이션 서버 사이에 두면 홉 수가 증가하여 애플리케이션 지연 시간이 길어집니다. 이는 만능 해결책이 아닙니다.

2개의 좋아요

우리 서비스는 이미지 비중이 높지 않습니다. CDN의 목표는 커뮤니티가 국제적(주로 미국과 유럽)이므로 모든 사용자에게 자산이 빠르게 로드되도록 하는 것입니다.

S3는 백업 저장에만 사용하고 있습니다.

1개의 좋아요

간단한 질문입니다. CDN을 변경한 후 rebake(재처리)가 필수인가요? 아니면 CDN URL이 달라진 경우에만 필요한 건가요? 아니면 전혀 필요 없나요?


수정: 아니면 rails 스크립트로 cooked posts(렌더링된 게시글)에 있는 구 URL을 새 URL로 대체하는 것이 단순히 가능한 건가요?

예를 들어, 다음을 포함하는 게시글이 있다고 가정해 보겠습니다:

<img class="ytp-thumbnail-image"
src="https://f5i4i8k5.stackpathcdn.com/uploads/default/original/3X/f/3/f3bc5ab19cc0394f33fd008e90ca06e081886a0b.jpeg"
title="Riding a unicycle part 76: Sullivan Canyon - Los Angeles"
width="480"
height="360"
loading="lazy"
style="aspect-ratio: 480 / 360;">

f5i4i8k5.stackpathcdn.com에서 newcdn.unicyclist.com으로 문자열을 검색 및 대체하는 것이 아무 문제 없이 가능할까요? 안전해 보이긴 하지만, 제가 하는 작업이 확실한지 확인하고 싶습니다.

모든 게시글을 rebake하는 것 자체는 마다하지 않지만, 처음 시도했을 때 겪었던 문제는 수천 개의 YouTube 동영상이 임베드되어 있어서, YouTube에 대한 요청이 너무 많다는 이유로 rebake 중 제 IP가 YouTube에 블랙리스트에 오른 것이었습니다.

따라서 모든 게시글을 rebake하고 동일한 번거로운 문제를 다시 겪는 것보다 안전한 대안이 있다면, 그 대안을 선택하고 싶습니다…

3개의 좋아요

대체 작업을 수행하는 rake 태스크가 있습니다. 이를 실행하는 것이 안전하고 좋은 아이디어라고 생각합니다. 모든 게시물에서 문자열 교체가 바로 당신이 찾는 기능인 것 같습니다.

2개의 좋아요

제이님,

rake 태스크를 사용하는 것에 대해서는 확신이 서지 않습니다.

CDN URL은 raw 필드보다는 cooked 필드에 존재하는 것 같습니다(메시지가 이메일로 전송된 경우를 제외하고는요).

제가 이해한 바로는, post:remap은 raw 필드에서만 해당 문자열을 검색합니다.

raw와 cooked 필드 모두에서 CDN URL을 대체하는 것이 안전하다면, 커스텀 rails 스크립트를 사용하는 것이 좋겠습니다.

2개의 좋아요

맞아요. 데이터베이스의 모든 필드에서 문자열을 교체하는 또 다른 . . . 기능 . . . 이 있습니다. 바로 그걸 찾고 계신 거죠. 죄송하지만 지금은 찾을 수가 없습니다. s3에서 다른 곳으로 데이터를 옮기는 것에 관한 주제들은 몇 가지 있지만, #howto는 없는 것 같습니다.

2개의 좋아요

이 단서를 알려주셔서 감사합니다!

아마 이것일까요?

DbHelper.remap('from', 'to')

Rebaking old posts won't pull new S3 CDN URL after S3 bucket rename - #10 by Brad_Wood 에서 찾았습니다.

그리고 여기에서 사용되고 있습니다:

CDN 서비스를 변경할 때 rebake의 안전한 대안이 된다면, howto 게시글이 정말 유용할 것 같습니다.

3개의 좋아요

오, 축하합니다. 알려주셔서 감사합니다. 직접 찾으면 충분할 줄 알았거든요. 찾아서 다행입니다.

3개의 좋아요