Changelog: 피드 개선

4076 단어 metachangelog
우리는 최근 여기 DEV에서 첫 번째six week cycle를 완료했으며 특히 기대되는 한 가지 변경 사항은 홈 페이지 기사 피드가 생성되는 방식을 더 쉽게 테스트하고 변경할 수 있다는 것입니다.

먼저 배경 지식: 1월 말에 홈페이지 기사 피드가 생성되는 방식에 대한 글을 썼습니다. 피드의 관련성을 개선하는 것이 우리에게 큰 우선 순위이지만, 시도조차 하기 전에 수행해야 할 몇 가지 정리 작업이 있었습니다. 이 주기에서 대부분의 시간을 홈페이지에 구성 요소Preact를 구현하고 우리(및 귀하!)가 더 쉽게 변경할 수 있는 위치에 피드를 가져오는 데 사용했습니다.

이전에 피드에서



과거에는 피드를 구성하는 논리가 Rails 백엔드와 클라이언트 측 JavaScript 모두에 존재했습니다. 일부 개체를 가져오기 위해 초기 쿼리를 작성하고 주문했으며 동일한 기사 세트에 대해 추가 순위 및 점수를 매겼습니다. 결과적으로 피드를 변경하여 제목에 이모티콘이 포함된 게시물의 우선 순위를 지정하려면 StoriesControllerinitializeFetchFollowedArticles.js.erb 모두에서 변경해야 합니다. 사용자가 보고 있는 홈 페이지 피드의 버전(일반 피드와 시간 기반 피드, 사용자가 로그인했는지 여부)에 따라 추가 JavaScript 파일을 변경해야 할 수 있습니다.

급격한 변화와 실험에는 적합하지 않습니다. 홈페이지 피드 구성이 드물게, 소량만 변경되는 것은 놀라운 일이 아닙니다.

함께하기



피드 구성 방식을 쉽게 변경할 수 있도록 피드 생성 논리를 서비스 클래스에 통합하기 시작했습니다. . 레거시StoriesController 및 새 컨트롤러( )는 모두 홈 페이지 기사 피드를 렌더링할 때 이 서비스의 출력을 사용합니다. 로그인한 사용자를 위한 기본 홈페이지 기사 피드의 initializeFetchFollowedArticles.js.erb에서 발생하는 순위를 사용했습니다(로그아웃한 사용자 경로 및 미리 지정되지 않은 피드 구성 요소는 여전히 이를 사용합니다. 아기 단계!).

요약: 홈페이지 피드의 구성을 실험하고 싶다면 Articles::Feed가 원스톱 쇼핑입니다!

피드 성능 평가



단순히 피드가 생성되는 방식을 변경하는 것만으로는 충분하지 않습니다. 목표는 사용자에게 보다 관련성 있고 매력적인 피드를 생성하는 것입니다. A/B 테스트를 위해 Andrew Kane의 우수한Field Test gem을 구현했습니다. Stories::FeedController의 이 코드 비트는 테스트가 선택되는 위치입니다.

  def ab_test_user_signed_in_feed(feed)
    test_variant = field_test(:user_home_feed, participant: current_user)
    case test_variant
    when "base"
      feed.default_home_feed(user_signed_in: true)
    when "more_random"
      feed.default_home_feed_with_more_randomness
    when "mix_base_more_random"
      feed.mix_default_and_more_random
    when "more_tag_weight"
      feed.more_tag_weight
    when "more_tag_weight_more_random"
      feed.more_tag_weight_more_random
    else
      feed.default_home_feed(user_signed_in: true)
    end
  end


각 "실험"은 Articles::Feed 서비스에서 고유한 방법을 가져오고 사용자는 . 더 좋은 점: Field Test는 어떤 사용자가 어떤 홈 페이지 버전을 받고 있는지, 해당 사용자가 얼마나 자주 페이지를 방문하고 기사에 댓글을 달고 있는지 추적합니다. 우리는 이 정보를 사용하여 홈 페이지의 어떤 변수가 사용자와 공감하는지 평가하고 있습니다. 항상 대화에 데이터를 가져오십시오!

다음으로



앞으로 몇 주 동안 홈페이지 피드 알고리즘을 모니터링하고 계속 조정할 것입니다. 또한 더 많은 피드 생성 인스턴스를 Articles::Feed 서비스로 가져오고 싶습니다. 관심이 있다면 언제든지 참여하십시오!

행복한 코딩! ❤️

좋은 웹페이지 즐겨찾기