복붙노트

[REDIS] 캐싱 JSON은 서버 측에서 객체

REDIS

캐싱 JSON은 서버 측에서 객체

나는 데이터가 포함 된 서버는 모바일 클라이언트 API 요청에 따라 제공되어야한다. 데이터 종류 지속적이며 업데이트 빈도는 (일주일에 한 번에 말을) 매우 낮다. 그러나 테이블 디자인 천천히 제공하는 API 요청을 만드는 꽤 무거운입니다

웹 서비스는 YII + PostgreSQL을 함께 구현된다.

해결법

  1. ==============================

    1.당신은 memcached를 사용할 수 있지만 다시 모든 사람들이 당신에게 데이터베이스 서버를 공격합니다. 귀하의 경우에, 당신은 당신의 웹 서비스에서 JSON 응답을 캐시에 더 적합 할 수 있습니다 있도록 쿼리 결과 종류 지속의입니다 말하고있다.

    당신은 memcached를 사용할 수 있지만 다시 모든 사람들이 당신에게 데이터베이스 서버를 공격합니다. 귀하의 경우에, 당신은 당신의 웹 서비스에서 JSON 응답을 캐시에 더 적합 할 수 있습니다 있도록 쿼리 결과 종류 지속의입니다 말하고있다.

    이것은 캐시 내장과 함께 역방향 프록시를 사용하여 수행 할 수 있습니다. 내가 예를 들어 당신에게 도움이 될 것 같아요 가장 우리가 부두 (자바)와 Nginx와 함께 할 방법 :

    우리의 설정에서, 우리는 우리의 모바일 클라이언트를위한 API를 제공하는 부두 (자바) 인스턴스를 가지고있다. 8080 / API 및 반환 JSON 결과는 로컬 MySQL 데이터베이스에 일부 쿼리에서 가져온 : API는 로컬 호스트에서 듣고있다.

    이 시점에서, 우리는 우리의 고객에게 직접 API를 제공 할 수 있지만 여기에 역방향 프록시 온다 :

    API를 앞 0.0.0.0:80/에서의 nginx 웹 서버 청취 앉는 (사방 포트 80) 모바일 클라이언트가 내장 된 역방향 프록시가 캐시에서 정확한 쿼리 문자열을 가져 오기 위해 시도 0.0.0.0:80/api에 연결합니다. 이 실패하면 로컬 호스트에서 그것을 가져옵니다 : 8080 / API, 그것의 캐시에두고 새로운 값이 캐시에 제공합니다.

    혜택:

    캐시 무효화에 대해 생각 :

    당신은 캐시 무효화에 대해 생각해야합니다. 당신은 로컬 호스트에 대한 모든 HTTP 200 요청에 대해 일주일 동안, 말하자면, 그것의 캐시에 개최 nginx를 말할 수 : 8080 / API, 또는 다른 모든 HTTP 상태 코드 1 분. 일주일 아래에있는 API를 업데이트 할 시간을,이 오면 어떻게 든 그것을 삭제하거나 시간 또는 하루에 캐싱 시간을 설정해야 할 수 있도록하지만, 캐시가 무효이다 (그래서 대부분의 사람들이 충돌 것 은닉처).

    이 더러운 때 우리는 캐시를 삭제하기로 결정했습니다 : 이것은 우리가하는 일입니다. 우리는 또 다른 작업이 인형을 통해 트리거 업데이트-API 이벤트에 서버 청취에서 실행해야합니다. 작업은 우리를 위해 Nginx에 캐시를 삭제 처리됩니다.

    또 다른 아이디어는 웹 서비스 내부의 청소 캐시 기능을 추가하는 것입니다. 우리는이 솔루션에 대해 결정 이유는 : 웹 서비스는 우려의 분리를 나누기 리버스 프록시 뒤에 실행 알고 있어야합니다. 그러나 나는 당신이 계획에 따라 달라집니다, 말할 것입니다.

    웹 서비스가 더 잘 만들 것 또 한가지, 올바른 ETAG 각 JSON 파일과 헤더를 캐시-만료 역할을하는 것입니다. 우리가 하나 개의 큰 업데이트 이벤트가 있기 때문에 다시 말하지만, 우리는 대신에 각 파일에 대한 작은 것, 그렇게하지 않았다.

    사이드 노트 :

    당신이 당신의 웹 서비스 + SSL 앞에 니스를 사용한다면 그래서, 당신은 구성을 같이 사용합니다 : Nginx에 -> 니스 -> 웹 서비스.

    참고 :  - Nginx에 서버 : http://nginx.com  - 니스 역방향 프록시 : https://www.varnish-cache.org  - 꼭두각시 IT 자동화 : https://puppetlabs.com  - Nginx에 프록시 튜토리얼 역 : http://www.cyberciti.biz/faq/howto-linux-unix-setup-nginx-ssl-proxy/ http://www.cyberciti.biz/tips/using-nginx-as- 역 proxy.html

  2. from https://stackoverflow.com/questions/18095421/caching-json-objects-on-server-side by cc-by-sa and MIT license