I는 모두 큰 자체 PHP 라이브러리를 사용하여 (웹 -) 애플리케이션의 스펙트럼을 유지한다. 이러한 응용 프로그램 중 일부는 직원이 사용하는 기존 데스크톱 응용 프로그램이지만 다른 응용 프로그램 (이 질문과의 관련성이 더 높음)은 인기가 계속 커짐에 따라 성능이 중요한 문제가되는 PHP 웹 사이트입니다.
현재 PHP 캐싱 방법
우리의 웹 사이트 중 하나를 속도를 높이기 위해, 내가되고 지속적으로 필요로하지 않는 웹 사이트의 특정 부분을 캐시 memcached를을 사용 (이 가게의, thinkgeek.com으로 생각) 동적으로 구축 (특정 카테고리의 제품 목록 등)
또한 OPCode 캐시로 APC를 공장에서 기본 설치로 사용합니다.
두 가지 방법 모두 웹 사이트의 성능을 크게 향상 시키지만, 저는 최적화의 길로 나아가고 있습니다. PHP 데이터베이스 배경에서 자신을 오는
에서
기능 변동성, 난 PostgreSQL을, 예를 들어, 신뢰할 수 있고 정확한 결과를 유지하면서 엄청난 성능 향상을 얻을 수 function volatility을 사용하는 방법을 매우 좋아입니다.
내 질문에 개발자가 특정 기능 (또는 클래스 메소드)을 IMMUTABLE
으로 표시하도록 허용하는 확장 기능이 있습니까? (동일한 입력 인수가 주어지면 해당 함수의 결과는 항상 동일 함을 의미). 이 캐싱 확장은 그 함수의 결과를 캐싱하여 큰 코드 라이브러리를 사용할 때 엄청난 성능 향상을 가져올 수 있습니다.
간단한 예제는 SomeClass::getWebsiteFooter();
과 같은 방법으로 웹 사이트가 변경되지 않은 경우 (캐시가 플러시되지 않는 경우) 항상 동일한 HTML 코드를 반환합니다.
이와 비슷한 것이 있습니까? 나는 시장에서 원격으로 비슷한 것을 찾을 수 없었다. 내 상황에 도움이되는 성능 향상 방법이 있습니까?
APC 사용자 캐시 Squid 또는 Varnish 같은보기 수준 Smarty caching 및 캐싱 프록시 캐싱을 제안? –
당신이 찾고있는 기술 이름은 메모입니다 (오타가 아니라 R이 없습니다). "php memoize"를 검색 할 수는 있지만 캐싱의 자체 버전을 구현하는 것이 훨씬 낫습니다. 왜냐하면 캐시를 무효화해야하고 Denis Ermolin이 말했듯이 캐시에 저장할 수 있기 때문입니다. APC. –
@ N.B. 감사! memoize라는 용어를 알지 못했습니다.꽤 큰 프레임 워크이기 때문에 memcache 조회/저장 코드의 몇 줄로 모든 것을 래핑해야하는 코드베이스가 꽤 복잡 할 것이기 때문에 (심지어 매번 3 줄이라도) . 불변으로 메소드를 표시 할 수있는 주된 이점은 (확장 기능에 의해 모든 마법이 자동으로 처리 될 수 있다는 것입니다 : ('public immutable function foo();'와 같이) 코드베이스가 복잡해지지 않는다는 것입니다. . – Staex