쿼리가있는 URL은 캐싱을 비활성화합니까?


12

URL에 쿼리 문자열을 첨부하면 브라우저가이를 캐시하지 않습니까? 예를 들어 내 사이트는 다음과 같은 작업을 수행합니다.

/radar-picture.png?v=sep2013

그리고 FireFox는 그 사진을 캐시하지 않습니다. 모든 요청에 ​​따라 다운로드됩니다.

FireFox가 원하는 동안 캐시를 캐시하고 싶습니다. v=매개 변수가 변경 되었을 때만 강제로 다운로드하고 싶습니다 .


1
쿼리 대신 파일 이름 자체를 변경하면이 작업을 수행 할 수 있다고 생각합니다. 따라서 이제 파일 이름은 radar-picture-sep2013.png미래에 어느 시점에서 변경 될 때 파일 이름이 됩니다 radar-picture-jan2014.png. 파일 이름이 변경되지 않으면 브라우저가 캐시 된 그림을 오랫동안로드 할 수 있도록 PNG의 최대 연령을 1 년으로 구성 할 수 있습니다.
vstm

답변:


3

정적 리소스 (예 : 이미지, CSS 또는 JavaScript)에 쿼리 문자열 키 / 값 쌍을 추가 하면 캐싱 문제가 발생할 수 있습니다 .

특히 Firefox 를 언급 했으므로 문제는 '캐시 충돌'과 관련이있을 수 있습니다.

Firefox 디스크 캐시 해시 함수는 약간 다른 URL, 즉 8 자 경계에서만 충돌하는 URL을 생성 할 수 있습니다. 리소스가 동일한 키로 해시되면 리소스 중 하나만 디스크 캐시에 유지됩니다. 브라우저를 다시 시작할 때마다 동일한 키를 가진 나머지 리소스를 다시 가져와야합니다. 따라서, 지문을 사용하거나 프로그래밍 방식으로 파일 URL을 생성하는 경우 캐시 적중률을 최대화하려면 응용 프로그램이 8 자 이상의 경계에서 다른 URL을 생성하도록하여 Firefox 해시 충돌 문제를 피하십시오.

[출처 : https://developers.google.com/speed/docs/best-practices/caching ]


7
"8 자 경계"란 무엇이며 어떻게 충돌을 피할 수 있습니까? 그러면 내 URL은 어떻게 보입니까?
Andrew

2

stackoverflow에 대한이 답변은 URL에 쿼리 문자열이있을 때 일부 브라우저가 주소 표시 줄에 입력하는 것과 링크를 클릭하는 것과 다르게 반응한다고 주장합니다. https://stackoverflow.com/a/85386/1145388

테스트 할 때 URL 표시 줄에 Enter 키를 누르거나 새로 고치지 말고 링크를 클릭하십시오.


2
나는 stackoverflow에 대한 답변이 구식 일 수 있다고 생각합니다. 스타일 시트 style.css?v=sep2013와 150KiB 에 쿼리 문자열을 넣으면 background-image:url('bgimage.jpg?v=sep2013');링크를 클릭하거나 주소 표시 줄을 통해 사이트를 탐색하는 것이 FireFox에서 매우 느립니다.
Mr. Smith
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.