어떤 방법이의 캐싱하는 것보다 다른 파일 또는 데이터베이스는 사용할 수 있습니까?

StackOverflow https://stackoverflow.com/questions/4062

  •  08-06-2019
  •  | 
  •  

문제

현재 제가 알기만 두 가지 방법으로 캐시 데이터는(사용 PHP 하지만 나는 가는 동일 적용됩니다 대부분의 언어).

  1. 저장 캐시 파일
  2. 캐시를 저장 큰 DB 분야

에는 어떤 것이 있는(아마도 더 나은)의 방법으로 캐나 그것은 정말이 간단하다?

도움이 되었습니까?

해결책

어쩌면 당신이 원하는 명시적인 더 정확하게 당신이 원하는 무엇을 캐시입니다.당신은 모든 이 기회를 캐쉬:

  • 액세스하는 데이터베이스 당신이 캐시 데이터를 먼저 올바르게 조정하 RDBMS,다음 사용하층을 위임하는 결정을 할수에 대한 쿼리를 동일한 데이터를(가 AdoDB 예를 들어.)
  • 추출이 계산서에서는 루프 코드 그래서 당신은 계산하지 않은 동일한 값입니다. 여기에 세 번째 방법:저장 결과는 세션에서는 사용자에 사용됩니다.
  • 미리 컴파일하 PHP 코드 확장자를 가진아 캐시 APC.이 방법은 없을 컴파일하고 동일한 PHP 코드가 모든 요청을 합니다.
  • 페이지 사용자에게 전송 을 만드는 당신이 설정은 오른쪽 메타 태그(수행에 대한 좋은 일이 세계를 사용하지 않는 ETL 적어도 절대적으로 필요);또 어쩌면 동적 페이지를 만드는 완전히 정적(을 일괄 처리 프로세스를 생성합니다.html 페이지)거나 프록시를 사용하여 캐시아 오징어.
  • 이로써 나는 모든 사람들 기회가 있는 사용자 경험을 향상시키기 위해 그 일을 하는 동안 사용자가 보이지 않는 당신의 방법입니다.예를 들어,미리 로드 IMG 태그에 HTML 파일,튜닝에 이에 대한 RDBMS prefectching,precomputing 결과를 저장하는 복잡한 계산하는 데이터베이스에서,등등.

내 경험에서 나는 당신을 당신의 코드 개선할 수 있는 많은 우리가 시작하기 전에 얘기를 캐싱에 대한 것들입니다.예를 들어,어떻게 잘 구축되는 귀하의 사이트의 탐색과 방법론을 제어할 사용자 경험을 제공합니다.다음 코드를 확인과 같은 도구 XDebug.

지 확인하십시오 얼마나 잘 당신이 당신의 SQL 쿼리를 잘하는 방법 당신은 당신을 인덱싱하 테이블이 있습니다.다음 코드를 확인하려면 다시 기회를 찾는 규칙을 적용합니다"를 읽지만 많은 시간을 작성하면"

사용한 간단한 도구를 YSlow 를 다른 간단한 일이다.체크인 코드는 다시 기회를 찾고 있고 브라우저에서(자바 스크립트를 통해)

다른 팁

할 수도 있습니다 캐시 메모리에서 훨씬 더 많은 효율적이다.도 memcached.

Seconding 는 몇 가지 간단한 물건이라고 갈 수 있는 분배 및 모든 재즈가 필요한 경우 그것은 너무

를 사용하는 경우 아파치 사용할 수 있습니다 mod_rewrite 를 정적으로 캐쉬 웹 페이지입니다.고 말할 수 있습니다 당신이 사용하는 PHP 로고에 대한 요청"/somepage.php".에.htaccess 파일에 넣은 다음과 같다:

RewriteEngine on
RewriteCond %{QUERY_STRING} ^$ # let's not cache urls with queries
RewriteCond %{REQUEST_METHOD} ^GET$ # or POST/PUT/DELETE requests
RewriteCond static_cache/%{REQUEST_URI} -s # Check that this file exists and is > 0 bytes
RewriteRule (^.*$) static_cache$1 [L] # If all the conditions are met, we rewrite this request to hit the static cache instead

하는 경우 캐시로 비어,요청이 처리하여 당신의 php 스크립트 평소와 같이,그래서 지금 그것은 단순한 문제를 만드는 당신의 php 스크립트를 저장한 결과 html 에서 캐시입니다.가장 간단한 방법이 사용하는 다른 htaccess 규칙을 추가 끝에 추가 몇 php 파일을 귀하의 모든 php 요청(이하지 않을 수 있는 좋은 아이디어,응용 프로그램에 따라):

php_value auto_prepend_file "pre_cache.php"
php_value auto_append_file "post_cache.php"

다음 당신은 다음과 같은 것이 가능합니다.

pre_cache.php:

ob_start();

post_cache.php:

$result = ob_get_flush();
if(!$_SERVER['QUERY_STRING']) { # Again, we're not caching query string requests
  file_put_contents("static_cache/" + __FILE__, $result);
}

몇 가지 추가 정규 표현식에서.htaccess 파일에 우리는 아마 시작 캐싱 query string 요청을 뿐만 아니라,나만 떠날 것이라는 운동에 대한 독자:)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top