2009-07-23 3 views
-1

캐싱되지 않도록 웹 응용 프로그램에서 새 이미지를 푸시하는 방법은 무엇입니까? 새로운 JS 또는 CSS 파일을 만들 때 쉽습니다. 템플릿이 멋지 기 때문에 URL에 버전 번호가 있습니다 (예 : a.js? v = 9).웹 응용 프로그램에서 새 이미지를로드하는 방법

지금, 이미지의 문제는 다음과 같습니다 -

는 그들은 CSS 파일에서 언급하고, 나는 거기 버전 변수를 가질 수 없습니다.

그렇다면 어떻게해야합니까?

+0

실시간으로 또는 누군가 다음 페이지를로드 할 때 이미지를 변경하라는 메시지가 표시되면 캐시에서 가져온 것이 아닌지 확인하십시오. – acrosman

답변

2

, I 것 :

는 CSS에서
  • , 별개의 마커를 포함하는 URL과 이미지에 점; 같은 "image.png?VERSION_NUMBER는"(literaly), 나는 파일을 나타 내기 위해 (개발 시스템에서) 아파치를 구성합니다 캐시에 문제를 방지하기 위해
  • 을 핵 물질 동안이 CSS 파일을 사용할 수 있습니다
    • 캐시해서는 안된다 브라우저
  • 나는 모든 CSS 파일의 실제 버전 번호로이 VERSION_NUMBER 마커를 대체 할 것이다 "프로세스를 구축"의 어떤 종류를 사용하는 (그리고 아마도, JS, PHP, HTML, ...) 것
    • T 그는 올바른 버전 번호를 포함하는 수정 된 파일을 만듭니다.
    • 해당 파일은 웹 서버에 배포 된 파일입니다.
    • VERSION_NUMBER은 각 파일의 SVN 개정판 일 수 있습니다. 이렇게하면 수정 된 파일 만 수정해야합니다. CSS 파일의 각 URL에 대해 마커를 바꾸기 전에 버전 번호를 확인해야합니다. 일부 브라우저가 있기 때문에 쿼리 문자열이 아닌 캐시 이미지 /의 JS/CSS를 할 경우

, 마커는 파일의 이름에 포함 할 수있다.

그리고 지금 당신이 "빌드 프로세스"를 가지고, 당신은 또한 측면 참고로 예를

를 들어, JS 및 CSS 파일을 축소하는 것처럼, 다른 조작을하는 데 사용할 수 있습니다 : 예 생성 및 테스트 프로세스/스크립트 작성에는 다소 시간이 걸립니다. 버전 번호를 나타내는 변수를 사용하여 PHP를 통해 CSS 파일을 서버링하는 것이 더 쉬울 수도 있습니다 ... 그러나 성능을 위해 CSS 파일 (PHP 페이지 당 적어도 하나, 아마 더 많은 것!) 현명하지 않을 것이다; 그래서 빌드 프로세스를 작성하는 데 조금 더 시간을 할애하는 것이 더 좋습니다.

+0

+1 좋은 설명. 하지만 SVN에서 체크 아웃 할 수있는 기술을 찾고있었습니다. 현재 모든 파일에 가능하지만 CSS의 이미지에는 사용할 수 없습니다. – Sabya

0

이미지 파일을 변경하는 동시에 CSS 파일을 수동으로 변경하고 "? v = 1"을 이미지 URL의 끝에 붙여 넣을 수 있습니다.

또한 PHP 프로세서를 통해 CSS 파일을 보내도록 서버를 구성 할 수 있으므로 일부 PHP 코드를 사용하여 이미지 URL에 "? v = 8"쿼리 문자열을 설정할 수 있습니다.

0

빌드 프로세스의 일부로 파일의 LastModified 날짜/시간이 긴 자바 스크립트 포함 및 이미지 URL에 쿼리 문자열을 추가합니다. 이를 통해 캐싱은 필요할 때 작동 할 수 있으며 개발자가 쉽게 잊어 버릴 수있는 무언가를 자동화합니다. 깨끗한 쉬운 방법 사이의 중간에

관련 문제