2013-04-18 1 views
0

cfWheels의 findAll 함수에서 캐시 기능을보고 있습니다. 나는 그것을 사용하는 것에 대해 조금 불안하다. 내 쿼리는 필자가 필요로하는 시간이 오래 걸리지는 않지만, 약간의 속도 향상은 항상 환영합니다. 그렇지 않으면 약 100ms가 걸리는 쿼리 캐시에서 10ms가 발생합니다. 내가 궁금해하는 점은 항목이 변경되면 다음 실행시 캐시가 지워지 길 바랍니다. 프레임 워크에는 메커니즘을 허용하는 메커니즘이나 플래그가없는 것처럼 보이므로 플래그를 설정하고 지워야합니다. 어쨌든 데이터베이스에서 읽어야 할 가능성이 큽니다. 나는 하루 종일 캐시를 설정하고 필요할 때 업데이트 할 수 있기를 바랬는데, 이것은 끔찍한 잘못입니까? 필자는이 응용 프로그램의 캐싱을 허용하는 기능을 개발할 가능성이 거의 없지만 재 방문하는 동안 가치가 있는지 궁금합니다.Coldfusion/cfWheels에서 자주 변경되지 않는 쿼리 캐싱

+0

다시 방문 할 가치가 있는지 여부는 쿼리 실행 빈도와 데이터 업데이트 빈도에 따라 다릅니다. 당신은 우리가하는 것 이상을 압니다. –

답변

2

캐싱은 응용 프로그램을 다시로드하여 지울 수 있습니다. 그것은 당신이 찾고있는 해답이 아니지만 해결책입니다, 여기에 다른 접근법이 있습니다. 새 데이터베이스 레코드를 추가 한 후 <CFHTTP>을 통해 URL을 보내서 <CFHTTP>을 통해 응용 프로그램을 다시로드 할 수 있습니다. 관리 사이트를 통해 레코드를 추가하는 경우 <cfhttp>을 사용하여 공개 사이트를 새로 고침 할 수 있습니다. :)

+0

캐싱은 응용 프로그램이 아니라 서버 일이라고 생각했습니다. –

+0

@DanBracuk CfWheels뿐만 아니라 다른 프레임 워크 (afaik)는 여러 수준 (내용, 함수, 쿼리)에서 캐싱을 허용합니다. ColdFusion의 경우 서버에서 캐싱을 용이하게 할 수 있지만 때때로 조인 및 레코드가 많은 경우 플랫 파일 (xml/txt) 백업을 사용하는 것이 데이터베이스에 연결하는 것보다 빠를 수 있습니다) – Daniel

+0

변경 사항이 너무 자주 발생하면 애플리케이션을 다시로드하면 시간이 많이 걸릴 수 있다는 것을 알게되었습니다. – Daniel

2

데이터베이스에 새 항목을 만들 때마다 cfhttp 태그를 사용하여 응용 프로그램을 다시로드하십시오.

+0

이 경우 항상 그렇지는 않은 cf 응용 프로그램을 통해 데이터베이스 쓰기가 수행된다고 가정합니다. –