쿼리가있는 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.