2009-12-16 7 views
1

다른 사이트 (이 부분은 완료되었습니다.)에서 정보를로드하고 싶습니다만, 페이지가로드 될 때마다이 작업을 수행하고 있습니다. 그래서 '마지막으로 체크 된 bbc 사이트'와 같은 설정 테이블에서 변수를 가질 생각이었고 페이지가로드 될 때 마지막 체크가 끝난 후 다시 확인해야합니다. 그렇게하는 것에 어리석은 것이 있습니까?앱 엔진 앱 디자인 질문

또한이 설정과 같이 1 개의 변수를 저장하기 위해 반드시 테이블을 사용해야합니까?

답변

2

"마지막으로 방문한 시간"을 추적하기 위해 데이터 저장소에 엔티티를 만드는 것 외에 2 가지 옵션이 있다고 생각합니다.

한 가지 방법은 jldupont에서 설명한대로 cron API를 사용하여 외부 페이지를 주기적으로 확인하는 것입니다.

두 번째 방법은 마지막으로 방문한 시간을 memcache에 저장하는 것입니다. memcache는 영구적이지 않지만 마지막 새로 고침 시간 만 저장하는 경우에는 필요하지 않습니다. 어떤 이유로 Memcache에서 항목이 사라지면 최악의 경우 페이지를 다시 가져오고 Memcache를 현재 날짜/시간으로 업데이트해야합니다.

첫 번째 방법은 정기적으로 외부 페이지를 확인하려는 경우입니다. 두 번째 방법은 사용자가 페이지를 클릭 할 때만 외부 페이지를 확인하려는 경우 최근 페이지에서 직접 페이지를 가져 오지 않았 으면 좋을 수 있습니다. 이 방법을 사용하면 누군가가 실제로 관련 데이터를 찾고 있지 않으면 외부 페이지를 가져 오는 리소스를 낭비하지 않습니다.

+0

"이 방법을 사용하면 다른 사람이 실제로 관련 데이터를 찾고 있지 않으면 외부 페이지를 가져 오는 리소스를 낭비하지 않습니다." 나는 이것을 생각하고 있었지만, 하루에 2 개가 넘는 히트를 얻길 바랬다. P –

+0

네, 검사 할 페이지의 수와 얼마나 자주 검사해야하는지에 달려있다. 확인해야 할 1000 개의 다른 페이지가 있다면 리소스를 절약 할 수 있습니다. 하지만 한 페이지 만 가지고 있다면 매시간 또는 매일 한 번 또는 한 번씩 확인해보십시오. –

1

Scheduled Tasks을 사용할 수도 있습니다.

또한 구성 매개 변수에 반드시 Datastore를 사용할 필요는 없습니다. 스크립트/구성 파일에이 값을 지정할 수 있습니다.

+0

내가 스크립트에서 변수를 선언하면 스크립트가 끝나면 사라질 것입니다. 내가 잘못? –

+0

더 정확하게 : 요청이 완료되면. 하지만 스크립트를 반복해서로드하는 것을 방해하는 것은 아무것도 없습니다. 예약 된 작업을 사용하는 경우이 구성은 cron.yaml에만 있습니다 (물론 작업 스크립트에서 물건을로드 할 수 있습니다). – jldupont

+0

포스터가 구성 매개 변수가 아니라 "마지막으로 가져온 시간"을 저장하는 것에 대해 이야기하고 있다고 생각합니다. –

0

일부 처리기가 해당 정보를 복구 할 수있는 방식으로 일부 새로운 정보를 저장하기 위해 GAE 앱 (예 : 예약 된 작업, 메시지 수신, 웹 페이지 방문 등)에 일부 처리기가 필요한 경우 , GAE의 저장은 유일한 좋은 일반적인 방법입니다 (예를 들어 memcache는 당신의 아래에서 만료 될 수 있습니다). "테이블"(?!)이 의미하는 바를 잘 모르겠지만 실제로 GAE의 스토리지를 의미하는 것으로 추측하면 대답은 "예"입니다. 아주 특정한 상황에서는 쿠키 나 Amazon 스토리지 인스턴스 등을 통해 방문자의 브라우저와 같이 네트워크의 다른 위치에 데이터를 저장하려고 할 수 있지만 이러한 특정 상황이 유익한 것으로 나타나지는 않습니다. 귀하의 유스 케이스에).