2012-04-11 2 views
0

우선, 제목에 대해 유감입니다. 나는 더 나은 것을 찾을 수 없었다.멀티 도메인 용 캐시 1 파일

PHP 스크립트로 생성 된 이미지 파일이 있습니다. 이 스크립트 (이미지)는 데이터베이스에 연결되어 있으며 해당 참조 URL을 테이블에 저장합니다. 출력 이미지가 변경되지 않기 때문에 캐시하는 것이 더 좋습니다.

하지만 내가 아는 한, 모든 페이지에서 1 파일 (예 : http://www.example.com/img.png.php)을 캐시하면 브라우저가 캐시에서 읽습니다. 내 대본에는 좋지 않습니다. 첫 번째 호출에서 참조 URL을 저장하고 브라우저에서 캐시하기 때문입니다. 그리고 다음 호출에서는 다른 웹 사이트 (리퍼러)에서 캐시 된 버전이 사용되며 브라우저는 서버에 요청하지 않으며 결국 referrer url은 데이터베이스에 저장하지 않습니다.

브라우저로 말할 수 있습니까, 각 도메인에 대해 이미지 1 부씩 복사 할 수 있습니까? 내 말은 :

http://wwww.abc.com/index.html 내 이미지 (스크립트)

브라우저 캐시를 검사를받을 수있는 요청을 전송하고, 그것을 발견하지 않습니다. 따라서 서버에서 가져 오십시오. PHP 스크립트는 리퍼러 URL을 저장합니다.

사용자는 ABC.COM의 다른 페이지로 이동합니다. (예 : http://wwww.abc.com/about.html) 브라우저에서 캐시를 확인하면 입니다. 그래서 파일 내용을 얻기 위해 서버에 요청을 보내지 않습니다. 및 PHP 스크립트가 실행되지 않습니다.

다른 사이트 (http://wwww.efg.com/index.html)가 내 이미지 (스크립트) 브라우저가 캐시를 확인하도록 요청을 보내고 찾지 못할 것입니다. 파일 에 대한 요청을 보내주십시오. 및 PHP 스크립트 실행 ...............................

가능합니까? (긴 텍스트로 인해 문법 문제가 많음) 죄송합니다.

+0

HTTP 리퍼러 어쨌든 –

답변

1

당신은 그 리퍼러를 저장 (즉, 캐시되지 않음) 리디렉션 페이지를 사용할 수 있습니다

하지만 당신은 항상 당신이 그것을 다시 그릴 필요가 없을 것입니다 서버 측 이미지를 "캐시"수 데이터베이스에 저장 한 다음 캐시 된 이미지로 리디렉션합니다.

그런 식으로 항상 조회수가 발생하지만 실제 이미지는 캐시됩니다. 당신의 HTML에서


당신이 사용할 수 있습니다

<img src="/image.php"> 

그리고 image.php에서을 :

<?php 
    // save the referrer in here 

    header('Location: /image.jpg'); 
?> 

/image.jpg는 (캐시 할 수 있습니다) 실제 이미지 모두의

+0

이해할 수 없습니다. 더 설명해 주시겠습니까? – mrdaliri

+0

답변이 업데이트되었습니다. – stewe

0

카운터가 될 것 같습니까?

AFAIK 당신이 설명했던 것과 정확히 똑같이 할 수는 없습니다.

<? 
/* 
    do some stuff 
*/ 
// send an image: the content-type first 
header('Content-type: image/png'); 
// and the image 
readfile('myImage.png'); 
+0

이미지 예였다 완전히 신뢰할 수있다. 스크립트, 스타일 시트 등이 될 수 있습니다. – mrdaliri

1

우선이다,에 대한 생각 사용자 경험 : 리퍼러 기능에 대해서만 페이지 로딩 시간을 늘려야합니까?또한 많은 브라우저/개인 정보 보호 도구 구성이 처음에는 Referer 헤더를 보내지 않거나 보내지 않음을 알고 있어야합니다.

매번 리소스 (JavaScript, 스타일 시트, 이미지, ...)를로드하려는 경우 캐싱을 방지하기 위해 리소스가있는 Cache-Control HTTP header을 보낼 수 있습니다. 아파치와 함께 제공하는 경우 예를 들어, 같은 디렉토리에 다음 .htaccess 파일을 추가, referer.js의 캐싱을 방지하기 위해 (mod_header 필요) :

<FilesMatch "^referer\.js$"> 
Header set Cache-Control no-cache 
</FilesMatch> 
+0

사용자에 대해 생각하기 때문에 캐시하고 싶습니다. 나는 2 개의 다른 웹 사이트 (referrer)에 대해 브라우저 캐시가 동일한 파일을 두 번 할 수 있음을 의미한다. – mrdaliri

관련 문제