왜 Discourse는 IndexNow을 지원하지 않나요?

IndexNow 기능을 검토한 결과, 이것이 핵심 기능/플러그인 중 하나가 되어야 한다고 동의합니다. 개발자 자원이 제한적이라는 점도 이해하고 있습니다.

핵심 팀을 지원하기 위한 필수 플러그인에 대한 제 의견을 아래에 정리했습니다. 추가 의견을 자유롭게 남겨 주세요.

전제 조건:

  1. IndexNow 플러그인은 예약 시간 모델을 기반으로 일괄 알림을 사용합니다 - 설계 고려 사항 #1 참조
  2. 일괄 알림은 시간 간격으로 설정됩니다.
  3. 알림은 공개 주제만 사용합니다.
  4. 플러그인이 활성화된 경우, 알림은 새/변경/삭제된 주제에 대해서만 전송됩니다.
  5. 플러그인은 과거의 변경 사항/이벤트에 대해 소급하여 알림을 보내지 않습니다.

사용자 안내:

  1. 원하는 IndexNow 검색 엔진에 가입합니다.
    • API 키를 발급받습니다.
    • 검색 엔진 엔드포인트 URL을 발급받습니다.
  2. 플러그인을 설치합니다.
  3. 관리자를 설정합니다.

사용 사례 - 관리자 설정

  1. 사용자가 자동 제출 기능을 켜고 끌 수 있도록 합니다.
  2. 사용자가 IndexNow 검색 엔진 엔드포인트를 입력할 수 있도록 합니다. 설계 고려 사항 #3 참조.
    • 입력 필드는 텍스트 매개변수입니다.
    • 입력 필드는 유효한 URL이어야 합니다.
    • 기본값은 https://www.bing.com/indexnow인 Bing URL입니다.
  3. 사용자가 API 키를 입력하고 저장할 수 있도록 합니다.
    • API 키를 저장하기 위한 문자열 입력 필드입니다.
    • 입력 필드는 영숫자여야 합니다.
    • 기본값은 ""입니다.
  4. 사용자가 일괄 알림을 위한 예약 시간 매개변수를 정의할 수 있도록 합니다.
    • 시간 매개변수는 시간 간격으로 설정됩니다.
    • 시간 값을 저장하기 위한 문자열 입력 필드입니다.
    • 유효한 입력값은 정수입니다.
    • 유효한 입력값은 1에서 24까지의 범위입니다.
    • 기본값은 12입니다.

사용 사례 - 텍스트 키 파일

  1. 시스템은 indexnowkey.txt라는 이름의 파일을 생성합니다.
  2. 키 파일은 루트 레벨에 저장되어야 합니다.
  3. 시스템은 파일에 API 키를 입력합니다.
  4. 파일은 http/https를 통해 원격 사용자/시스템에서 접근 가능합니다.

사용 사례 - 일괄 알림 프로세스 예약

  1. 시스템은 관리자 설정에서 정의된 설정에 따라 간격 기반으로 작업을 예약합니다.
  2. 간격 값은 작업 사이의 지연 시간을 시간 단위로 정의합니다. 예를 들어, 입력값이 2이면 작업이 2시간마다 실행되어야 함을 의미합니다. 값이 4이면 작업이 4시간마다 실행되어야 함을 의미합니다. 값이 24이면 작업이 하루에 한 번 실행되어야 함을 의미합니다.

사용 사례 - 일괄 알림 프로세스

  1. 시스템은 관리자 설정에서 정의된 사이트 설정을 통해 알림 프로세스가 활성화되었는지 판단합니다.
  2. 시스템은 사이트 설정에서 API 키가 유효한지(빈 문자열 ""이 아닌지) 판단합니다.
  3. 시스템은 정의된 시간 간격 설정을 기반으로 주제 목록을 생성합니다. 쿼리 시간 범위에 대해서는 설계 고려 사항 #2 참조. 포함될 주제 매개변수는 다음과 같습니다:
    • 주제는 공개 보기만 허용됩니다.
    • 새 주제
    • 새 게시물이 있는 주제
    • 수정된 게시물이 있는 주제
    • 삭제된 주제
    • 주제 목록은 중복이 없어야 합니다.
  4. 시스템은 다음 형식을 사용하여 JSON 패킷을 생성합니다.
{
  "host": "current_site",
  "key": "api_key",
  "keyLocation": "https://current_site/indexnowkey.txt",
  "urlList": [
      "https://www.example.com/url1",
      "https://www.example.com/folder/url2",
      "https://www.example.com/url3"
      ]
}
  1. JSON 패킷은 다음으로 전송됩니다.
    • URL: sitesettings.search_engine_indexnow_endpoint
  2. JSON 패킷은 다음 헤더와 함께 전송됩니다.
    • Content-Type: application/json; charset=utf-8
    • Http/1.1
    • Host: bing
  3. HTTP 요청 수신 확인을 검증합니다.
    • http 200 - 제출 성공 - 프로세스 종료
    • Http 429 - 제출 시도 횟수 초과 - 간격 시간을 늘리도록 관리자에게 알림을 보냅니다.

설계 고려 사항:

  1. 일괄 알림 vs. 개별 알림—개별 알림은 작은 도메인의 경우 허용될 수 있지만, 대형 보드의 경우 모든 새/업데이트된 게시물에 대해 알림을 추가하면 많은 이벤트 프로세스가 생성될 수 있습니다. 검색 엔진 인덱싱 성능 관점에서 볼 때, 시간당 일괄 알림은 포럼의 80%에 대해 허용 가능한 수준입니다.
  2. 일괄 알림 쿼리 타이밍 - SideKiq가 간격 타이밍을 제어합니다. SideKiq가 과부하 상태인 경우, 일괄 알림 프로세스가 지연될 수 있습니다. 쿼리 시간 범위가 예약 간격과 같을 경우, 일괄 알림 프로세스가 새/업데이트된 주제를 놓칠 수 있습니다. 지연된 프로세스를 커버하도록 쿼리를 확장하는 시간 매개변수가 필요합니까? 아니면 스케줄러가 쿼리 시간 간격을 제어하도록 초기화된 타임스탬프를 전달할 수 있습니까? 아니면 제출된 주제와 타임스탬프를 위한 데이터베이스 테이블/값을 생성해야 합니까?
  3. 각 검색 엔진과 정의된 IndexNow URL 엔드포인트를 포함하는 내부 테이블을 구축해야 합니까? 사용자는 URL을 입력하는 대신 드롭다운 메뉴에서 선택할 수 있습니다. 이를 통해 잠재적인人為 오류를 제거할 수 있습니다.

무엇이 빠져 있습니까? 무엇을 추가하시겠습니까?

1개의 좋아요