나는 서버로 apache httpd를, 백엔드로 mysql을 사용하는 웹 사이트를 가지고있다. 그것은 요청이 많아서 서버가 충돌하기 때문에 너무나 인기있는 "오늘의 생각"을 발표합니다. 동일한 페이지가 요청되었으므로 (생각은 하루에 한 번만 변경됨), 다른 클라이언트가 동일한 요청을하면 캐싱 서버가 페이지를 반환하도록 캐싱 서버를 주 서버 앞에 놓을 수 있습니까? 데이터베이스에 갈 필요없이?웹 사이트 앞에 캐싱 서버를 둘 수 있습니까?
답변
물론입니다. 이를 위해 잘 작동하는 많은 제품이 있습니다. 아파치 자체는 이런 식으로 작동하도록 구성 될 수 있습니다. 리눅스 나 유닉스에서 Squid를 사용하는 것이 더 나은 선택입니다.
Windows에서 MS는 항상이 기능을 수행 할 캐시/프록시 제품을 제공하고 있습니다. 현재 ISA Server 2006입니다.이 유형의 응용 프로그램에 대해서는 극적으로 과장되어 있지만.
Squid이 좋습니다.
예. 당신은 역방향 프록시 (또는 같은 일에 대해 부정확 한 용어 인 "http 가속기")에 대해 이야기하고 있습니다. 매우 일 수 있으며 매우 많은 높은 처리량 사이트에서이 기술을 사용합니다.
오른쪽으로 이동하는 핵심 요소는 캐싱 관련 HTTP 헤더입니다. 따라서 HTTP RFC (실제로 끝낼 수 있음)를 읽는 것이 좋습니다. 헤더를 올바르게 작성하지 않으면 개인화 된 페이지가 캐싱되어 잘못된 사람들에게 제공되는 경우 보안 효과가 거의 없거나 보안 문제가 발생할 수 있습니다.
또한 최상의 캐싱 효과를 얻으려면 페이지를 여러 부분으로 나누어야 할 수도 있습니다. 예 : 현재 서버 시간을 초 단위로 표시하는 페이지 구석에 시계가 있어야한다고 주장하면 전체 페이지가 1 초 동안 캐시 가능하게됩니다. 그래서 1) 어리석은 시계를 떨어 뜨리거나 2) 클라이언트 측 스크립트에 의해 생성되게하거나 3) 클라이언트 사이드 스크립트가 페이지의 특정 부분을 특수한 URL에서 끌어 와서 항상 작은 변화만을 출력하게하십시오 , 캐싱 할 수없는 HTML 조각.
나는 한때 대형 웹 사이트의 역 프록시로 Squid를 사용했습니다. 요즘 내가 다시 해보려한다면 Varnish을 시험해 볼 것입니다.
memcached을 사용해 볼 수도 있습니다. 그것이 우리 회사에서 사용하는 것이므로 LiveJournal도 그것을 사용한다고 생각합니다. 그것은 DB 요청을 캐싱하고 DB 액세스에 심각한 함몰을 만듭니다.
나는 가장 간단하고, 견고하며 유지하기 쉬운 Javier의 솔루션을 적극 추천합니다. 올바른 Expires 헤더를 24 시간 앞으로 보내고 ETags를 올바르게 설정하는 것을 잊지 마십시오.
당신의 "생각을 하루"페이지가 하루에 한 번을 제외하고 변경하지 않을 경우, 할 어쩌면 간단한 일이
wget을 http://your_site/your_page.php -O의/var/www /에서 your_site_directory/그 하루에 한 번 같이 일을 시작하는 것입니다 your_page.그런 다음
당신이 당신의 아파치 서버와 SQL 서버의 부하를 줄일 수 HTML
(your_page.php이 your_page.html하기에서 페이지 변경 링크) ...
나는 could't Javier's suggestion에 더 동의하십시오 (정적 웹 페이지 생성).
정적 파일을 ".php"가 아닌 ".html"로 저장하거나 DB에서 데이터를 가져 오는 데 사용되는 언어가 무엇이든 저장하십시오. 정적 파일을 사용하면 이 많으며 파서 또는 실행 파일을 시작하는 것보다 빠릅니다. 스크립트, CGI 및 다른 모든 것들이 시작되고, 파싱되고, 실행되고, 그 밖의 것이 무엇이든간에 정적 파일 (HTML, GIF, ...)은 네트워크에 연결됩니다 ... 실제보다 더 많은 서버 자원이 필요합니다. 정적 파일.
정적 파일의 오버 헤드는 단지 I/O입니다. 메모리에 캐시 된 객체는 훌륭하지만 여전히 객체를 관리하는 오버 헤드가 있으며 과도한 사용으로 인해 까다로운 작업이됩니다. 따라서 정적 파일의 편리함과 아름다움.
또 다른 이점은 웹 서버 스레드의 일부가 아닌 프로세스가 업데이트 및 유지 관리를 수행 할 수 있다는 것입니다. 서비스 잠금을 업데이트하면 웹 서버가 잠기지 않습니다.
- 1. 웹 사이트 캐싱
- 2. 웹 사이트 파일 캐싱?
- 3. 동일한 웹 서버를 사용하여 PHP 웹 사이트 앞에 Pyramid를 삽입하려면 어떻게해야합니까?
- 4. Django - 다중 사이트 사이트 캐싱
- 5. 웹 사이트 호스팅에 apache2 서버를 사용하려면 어떻게해야합니까?
- 6. 홈 서버를 통해 웹 사이트 설정
- 7. 웹 서버를 인덱스 서버로 만들 수 있습니까?
- 8. mapreduce를 사용하여 웹 서버를 구현할 수 있습니까?
- 9. ASP.NET 웹 서비스와 PHP 웹 사이트 둘 다 호스팅하도록 Apache를 구성 할 수 있습니까?
- 10. REMOTE_ADDR을 비워 둘 수 있습니까?
- 11. 위젯을 캐싱 할 수 있습니까?
- 12. 총 웹 사이트 수
- 13. akamai 캐싱 및 사이트 렌더링
- 14. 웹 사이트 생성을 위해 gmail을 사용할 수 있습니까?
- 15. 레일 : 캐싱 문제가 있습니까
- 16. web.config에서 캐싱 속성을 설정할 수 있습니까?
- 17. 애플리케이션에 RESTful 및 SOAP 웹 서비스를 둘 수 있습니까?
- 18. C#과 vb.net을 같은 asp.net 웹 사이트에 둘 수 있습니까?
- 19. 도메인 이름별로 서버를 차단하여 웹 사이트 공격을 차단하는 방법
- 20. UIViewController를 캐싱 할 수 있습니까?
- 21. 내 웹 사이트 호스팅
- 22. 친구 웹 사이트 서버에서 내 웹 사이트를 개발할 수 있습니까?
- 23. 맞춤 웹 서버 캐싱
- 24. Visual Studio 2010에서 웹 사이트 용 로컬 서버를 만드는 방법
- 25. 트위터 데이터를 사용하는 웹 사이트 구축 : 모범 사례 캐싱?
- 26. flex 서버를 웹 서버에 놓고 로컬로 참조 할 수 있습니까?
- 27. 웹 소켓을 사용하면 브라우저에서 서버를 실행할 수 있습니까?
- 28. 동일한 컴퓨터에서 두 대의 웹 서버를 실행할 수 있습니까?
- 29. 클러스터에 둘 이상의 ASP.NET 상태 서버 서비스를 가질 수 있습니까?
- 30. 서버를 유지하면서 확장없이 사이트 URL을 만드시겠습니까?