2016-09-26 2 views
-2

Google Play와 같은 기본 앱 스토어를 가지고 있습니다. 앱 세부 정보를 매우 빠르게로드해야하며, 앱 세부 정보를 만들 테이블을 선택하고 가입시키지 않아도되고, Android 캐시 앱이 내 웹 서비스를 호출하는 동적 캐시 시스템이 필요합니다. 웹 서비스는 데이터베이스 인스턴스에서 선택하지 않습니다. 캐시에서 선택하십시오. 아이디어가 있습니까? 참고 : 앱 세부 정보를로드하는 속도는 매우 중요합니다. Google에서이 작업을 수행하는 메커니즘을 알고 있습니까?PHP와 MySQL을 사용하여 동적 캐시 시스템을 만드는 방법은 무엇입니까?

항상 캐시 업데이트를 유지하는 방법은 무엇입니까?

+1

정확히 똑같은 질문을하면 [이전 질문] (http : // stackoverflow)에 대한 응답이 달라집니다.co.kr/questions/39703370/how-to-create-a-dynamic-cache-system)을 참조하십시오. –

+0

@ mark-baker 나는 내가 원하는 것을 가지고 내 자신의 질문을 편집한다. –

+0

"poor mans cache"를 사용하여 서식이 지정된 데이터가 포함 된 html 파일을 만든 다음 5 분이 지나지 않은 경우 필요하면 어디로 포함시키고, 그렇지 않으면 길게 선택하고 캐시를 다시 만듭니다. 반복. – Cups

답변

1

나는 찾고있는 정보를 반환하는 쿼리를 만들뿐입니다. MySQL은 자주 실행되는 쿼리 결과를 자동으로 캐싱합니다. 쿼리가 느린 경우 데이터베이스를 리팩터링하거나 쿼리를 다시 작성해야 할 수 있습니다.

그 이상의 것이 필요한 경우 서버에 MySQL Query Results Cache Plugin을 설치하면됩니다.

[발췌]

쿼리 캐싱을 유발하는 네 가지 방법이 있습니다. SQL의

  • 사용 규칙 mysqlnd_qc_is_select()
  • mysqlnd_set_cache_condition은() 쿼리의 결정에 따라 자동 기반으로하여, 예를 들어, 쿼리 당 기준으로 결정하는 쿼리 기준으로 당에
  • 사용자 공급 콜백을 암시
  • mysqlnd_qc.cache_by_default = 1 자동 캐싱에 대한 모든 쿼리를 맹목적으로

세트 규칙을 캐시합니다.

SQL 힌트는 SQL 표준 호환 주석입니다. SQL 주석으로서 데이터베이스에서 무시됩니다. 명령문이 캐싱을 사용 가능하게하는 SQL 힌트로 시작하거나 SELECT 문인 경우, 명령문은 캐싱에 적합하다고 간주됩니다.

캐시되어야하는 개별 쿼리는 SQL 힌트/qc = on /으로 시작해야합니다. 문자열 값을 사용하는 대신 PHP 상수 MYSQLND_QC_ENABLE_SWITCH를 사용하는 것이 좋습니다. 캐싱

  • 자격이없는 및 캐시되지 않은 : 테스트 INTO INSERT (1)

  • 캐싱을받을 수 없습니다 및 캐시되지 (ID) 가치 : 캐시하지만 캐시되지 않은에 대한

  • 자격 SHOW의 ENGINES : 테스트 FROM SELECT ID는 캐싱

  • 자격이 캐시 :/품질 관리 시험 FROM =에/SELECT ID

예제 SELECT 문 스트링에는 MYSQLND_QC_ENABLE_SWITCH SQL 힌트 접두어가 붙어있어 명령문 캐싱이 가능합니다. SQL 힌트는 캐싱을 가능하게하기 위해 명령.. 자 열의 맨 처음에 제공되어야합니다.

+1

* mysqlnd_qc를 설치하고 구성하는 경우에만 "MySQL과 PHP는 자동으로 쿼리를 캐시합니다"* - 음, 잘 ** ** 기본적으로 아무 것도 캐시되지 않습니다. – deceze

+0

MySQL은 자동으로 SELECT 쿼리 결과를 캐싱합니다. http://dev.mysql.com/doc/refman/5.7/en/query-cache.html –

+1

예, 답장에서 인용 한 거대한 섹션에는 명시 적 설치 및 구성이 필요합니다 플러그인의 ... – deceze

관련 문제