2014-09-21 3 views
0

나는 웹 사이트 코드를 관리하는 소규모학과에서 근무하고 있습니다. 대부분의 코드는 PHP로 작성되었으며 몇 개의 별도 데이터베이스 서버에 연결하여 HTML 페이지를 생성합니다. 데이터베이스가 자주 업데이트되지 않기 때문에 궁금 해서요 PHP가 HTML 페이지를 만들고 해당 페이지 서버 측을 저장하는 방법이 있습니까? 기본적으로 PHP는 페이지를 생성하지만 모든 요청에 ​​대해 호출되지는 않지만 데이터베이스에 변경 사항이있을 때만 스크립트가 호출됩니다. PHP로 생성 된 HTML 페이지를 서버에 저장하여 재생성하기 전에 많은 클라이언트에게 제공 할 수 있습니다.네트워크 부하를 줄이기 위해 서버 쪽 HTML 페이지 캐싱

내가 요청이 일반적으로 다음과 같이 작동 알고

요청> 웹 서버> PHP를 호출> 서버> PHP는 DB 정보와 HTML을 생성 dB로 연결> HTML은

내가 뭔가를 찾고 있어요 클라이언트에 반환 보기 다음과 같습니다 :

dB 업데이트> 웹 서버가 요청

그런 식으로 요청이있을 때마다위한 HTML> HTML 페이지 캐시를 생성, 대신 다음과 같이 진행됩니다

요청> 로컬로 저장된 캐시 된 html 페이지가 클라이언트에 반환됩니다.

이 주제에 대한 조언을 주시면 감사하겠습니다. 이 모델이 많은 트래픽에서 많은 프로세서 시간과 네트워크를 절약 할 수있는 것 같습니다.

답변

0

웹 서버에서 캐싱과 같은 솔루션을 제외하면 캐시하려는 이유에 따라 크게 두 가지 방법으로 접근 할 수 있습니다.

  1. PHP의 스크립트는 서버의 부하를 일으키는 원인이되지 않으며, 당신은 그것을 해결할 수 없습니다 : 대체 또는 하드웨어 업그레이드 옵션입니다, 나 PHP 코드를 최적화한다. 정적 (HTML) 컨텐츠를 생성하여 사용자에게 제공 할 수있는 유일한 시나리오입니다. 당신이 인증 등을 잃어 버렸을 때 저는 진심으로 의심 스럽습니다.

  2. (외부) 데이터베이스 서버의 부하가 큽니다. PHP 스크립트에서 결과 캐싱을 고려하고 데이터 변경 사항이 거의 없다는 점을 고려하여 항목의 만료 시간을 상대적으로 길게 사용하십시오. 두 번째 옵션의 원인을 가정

Fast Cache처럼, PHP에 대한 몇 가지 캐싱 모듈로 찾고 고려, 질문에 대한 이유입니다. 그러나 다시 캐싱을 조사하는 원인에 따라 달라집니다. 일반적으로 데이터베이스 컨텐츠를 기반으로 정적 컨텐츠를 생성하는 것은 생성 부분이 너무 오래 기다려야 만 가능한 솔루션입니다.

+0

질문 제목을 보면 : 네트워크로드는 서버와 클라이언트 간의 바이트 수에 의해 결정됩니다. PHP 코드 나 캐싱을 최적화하지 않으면 특정 문제를 해결할 수 있습니다. 최종 결과는 동일한 HTML입니다. 생성 된 페이지 (두 솔루션 모두)에 올 Y 른 적절한 캐시 제어 헤더가 있는지 확인하십시오. – Seshoumaro