2011-01-04 4 views
1

Google은 사용자 제작 콘텐츠가 많은 사이트가 있으며 Google 광고를 게재하고 싶습니다. 일부 콘텐츠는 해당 콘텐츠가 포함 된 페이지에 광고를 게재해서는 안되며, 그렇지 않으면 전체 사이트가 금지됩니다. 문제가되는 모든 콘텐츠와 일치하는 것으로 생각되는 정규 표현식을 제안했습니다.레일즈에서 페이지의 나머지 부분이 특정 정규 표현식과 일치하지 않는 경우에만 페이지의 섹션을 어떻게 포함시킬 수 있습니까?

  1. 광고 섹션없이 한 번 페이지를 렌더링하고는
  2. 가 정상적으로 페이지를 렌더링 깨끗하면 다음에 광고 섹션을 삽입하고 수행

    그래서, 세 가지 방법은 마음에 와서 클라이언트 측 자바 스크립트에 삽입

  3. 변경되는 페이지 부분 만 캡처하여 광고 섹션 위에 페이지를 렌더링합니다. 나중에 변경 부품이 없는지 확인하십시오. 캡쳐 된 텍스트가 깨끗한 경우에만 광고를 표시하고 변경되지 않고 캡처되지 않은 부분은 사전에 잘 검사해야합니다.

첫 번째 페이지 렌더링이 너무 오래 지연 될 수 있습니다. 두 번째 광고는 광고를 너무 오래 게재하는 것을 지연시킬 수 있습니다. 세 번째는 너무 허약 해 보인다. 더 나은 접근 방법이 있습니까? 그렇지 않은 경우, 어느 것이 3의 최상의 솔루션입니까?

답변

2

사용자 생성 콘텐츠를 데이터베이스에 저장하는 경우 모델 정의 내에서 콘텐츠가 '깨끗한'것인지 아닌지에 대한 결정을 추가 할 수 있어야합니다.

그런 다음, 포함하거나 예를 들어, 현재 객체의 청결의 값에 따라 관련 광고 태그를 제외 할 수 귀하의 의견 :

페이지의 콘텐츠는 여러 개체의 구성 및 다음을 수행해야한다
<%= @article.body %> 
<% if @article.clean? %> 
    <= render :partial => 'ads/google' %> 
<% end %> 

경우 가능한 모든 출력 텍스트를 확인하십시오. 그 작업은 조금 복잡하지만 실현 불가능합니다.

그래도이 비즈니스 로직을 클라이언트/자바 스크립트 레이어에만 넣으려고하는 것 같습니다. 제안한 바와 같이, 이것은 매우 느리고 신뢰성이 떨어질 수 있습니다. 테스트하기가 정말 어렵습니다. 규칙을 비즈니스 모델로 옮기면 테스트 할 수 있으며 최대한 빨리 실행하는 방법에 따라 작업을 중단하지 않도록 할 수 있습니다.

+0

나는 그것을하고 싶지만, 깨끗한 내용을 포함하고있는 캐시 된 셀을 자주 사용하므로, 미리 청결을 결정하기는 어렵다. – Simon