Onebox에 대해 약간 불편하게 느끼는 점 중 하나는, Onebox의 콘텐츠가 게시물에 캐시되어 게시물이 수정될 때까지 필드를 변경해도 내용이 바뀌지 않는다는 것입니다.
예를 들어, 계정에서 OneBox를 생성한 후 일주일 뒤에 사용자가 자기소개를 변경하더라도…
Onebox에 대해 약간 불편하게 느끼는 점 중 하나는, Onebox의 콘텐츠가 게시물에 캐시되어 게시물이 수정될 때까지 필드를 변경해도 내용이 바뀌지 않는다는 것입니다.
예를 들어, 계정에서 OneBox를 생성한 후 일주일 뒤에 사용자가 자기소개를 변경하더라도…
페이지가 볼 때마다 Onebox를 다시 다운로드하면 속도가 상당히 느려질 것입니다. 변경된 적이 없는 Onebox를 다시 다운로드하는 것은 무의미합니다. Onebox가 변경되었는지 알 수 있는 방법이 없으므로, 재빌드 후 강제 적용(렌치 또는 편집을 통해)하는 것이 가장 좋은 방법입니다. 특정 카테고리에 정기적으로 업데이트하려는 Onebox가 있을 것으로 예상된다면, 해당 카테고리의 모든 주제를 매일 다시 생성하도록 하는 플러그인을 만들 수 있습니다.
일반적으로 Onebox는 캐시됩니다. 외부 사이트의 스크래핑을 로컬에서 제한하여 계정 정지를 방지하기 위한 것입니다! (물론 캐싱에는 성능 향상이라는 장점도 있습니다!) 가끔 캐시를 우회해야 하는 경우 링크 끝에 가짜 쿼리스트링을 추가하면 됩니다.
?myname=isbill
또는 이와 유사한 값을 추가하면 됩니다.
이렇게 하면 새로 고침이 수행됩니다.
외부 콘텐츠의 경우 원박스(Onebox) 캐싱은 필수적이며, 갱신이 이루어질 것이라는 기대도 없습니다. 제가 언급한 것은 내부 원박스입니다. 위에서 드린 예시에서도 언급했듯이, 사용자가 생성한 원박스는 해당 사용자의 자기소개가 변경되면 모든 사이트에서 업데이트될 것으로 기대됩니다.
또한, 내부 콘텐츠의 원박스도 부하를 줄이기 위해 캐싱해야 하지만, 내부 원박스를 어딘가에서 인덱싱해 두는 것도 나쁘지 않을 수 있습니다. 이렇게 하면 원본 레코드가 변경되면 해당 원박스에 대해 업데이트 작업이 예약됩니다.
현재 상황에서는 디스코urses(Disourse)가 내부 원박스의 포맷팅을 변경해도, 기존 게시물에는 동일한 패턴으로 표시되기 때문에 문제가 발생합니다. 원박스의 내용을 JSON 형태로 게시물에 캐싱해 두고 클라이언트에서 포맷팅을 처리하면 이 문제가 해결됩니다.
사이트에 Onebox 지원을 추가하는 중인데, 게시물을 편집해도 Onebox 캐시가 새로워지지 않습니다. 또한 렌치 메뉴에서 “재빌드 후 게시” 옵션도 찾을 수 없습니다.
그러나 가짜 쿼리 문자열을 추가하면 작동합니다. 다만 초기 URL로 돌아가면 캐시된 버전이 다시 표시됩니다.
놓치고 있는 설정이나 방법이 있을까요?
현재 버전: Discourse 2.5.5
CDN을 사이트 앞에 프록시로 사용하고 프록시에서 캐시 계층을 활성화하면 문제가 발생할 수 있으므로 주의하세요. CDN을 프록시로(예: Cloudflare) 사용하고 있다면, 한 번 끄고 다시 문제를 확인해 보세요.
CDN에 익숙하지 않고 Cloudflare도 사용하지 않고 있습니다. 저는 단순히 OpenGraph를 구현하여 Onebox를 사용하려고 사이트에 og: 메타데이터만 추가하고 있습니다.
그 결과, 제 사이트에서 많은 변경 사항을 가하고 있으며, Discourse에서 참조될 때 어떻게 보이는지 확인하고 싶습니다.
게시물을 편집해도 Onebox가 링크를 새로고침하지 않는다는 것을 알게 되었습니다. URL에 ?x=1을 추가하면 새로고침이 됩니다.
게시물이 편집될 때마다 Onebox가 대상 URL을 다시 스캔해야 하는가요?
이 기능에 대한 많은 관심을 보이지 않는 것 같습니다… 제 생각에는 버그인 것 같습니다. Onebox 새로고침을 켜고 끌 수 있는 체크박스 컨트롤이 있는 것이 아니라면요.
대안적 접근 방식의 예로, 이 페이지는 메타데이터를 테스트하여 어떤 결과를 얻을지 확인할 수 있게 해주지만, 동시에 Facebook 캐시의 프론트 엔드이기도 합니다.
그들의 OpenGraph 태그가 깨져 있는 것 같네요! ![]()
이 도구에서 URL을 시도하면 캐시 결과를 가져오고, 사이트를 다시 스크레이핑하여 캐시를 업데이트할 수 있는 버튼을 제공합니다.
이 도구에 대해 멋진 옵션이 될 수 있겠습니다… 캐시에 있는 URL에 마우스를 올리면 나타나는 버튼 같은 것 말이죠.
현재로서는 이 기능을 구현하면서 제 첫 번째 테스트들은 항상 특정 링크에 표시되는 내용과 동일합니다.
우리는 또한 원박스(onebox)를 새로고침하는 방법을 찾고 있습니다. 우리의 경우 포럼 내 다른 주제의 원박스를 다루고 있습니다.
우리의 사용 사례는 포럼 전반에 걸쳐 문서를 구축하는 것이며, 이는 다른 위키 게시물을 재구성할 수 있습니다. 하지만 이 게시물들이 위키 게시물인 관계로, 시간이 지남에 따라 여러 번의 수정이 이루어질 가능성이 높기 때문에 원박스가 최신 상태로 유지되지 않는 것은 이상적입니다.
원박스가 우리 포럼의 도메인과 일치하거나, 이 사용 사례가 발생하는 카테고리(위키/문서)에 속하는 경우 자동으로 새로고침될 수 있는 설정이 있다면 좋겠습니다.
주 사이트에서 오픈그래프(OpenGraph) 지원을 구축하는 동안(디스코urs와 SSO로 연결됨) 이 문제를 점점 더 자주 겪고 있습니다.
정말 도움이 되는 한 가지 트릭은 이제 실제 URL을 바로 넣지 않는 것입니다(아예 넣지 않는 경우도 있음). 대신 위에서 @merefield님이 제안한 트릭을 사용합니다:
URL을 처음 참조할 때 끝에 ?n=1을 추가합니다. 원박스가 보기 나쁘면 페이지를 업데이트한 후 N 변수를 증가시켜 보기 좋게 될 때까지 반복하면 됩니다.
완료되면, URL만 그대로 넣는 사용자는 첫 번째 스크래프가 아닌 페이지의 최종 스크래프 결과를 받게 됩니다.