Cloudflare : URL에 쿼리 문자열이있는 경우 정적 HTML 캐시


10

빠른 CloudFlare '새로운 사용자'질문 :

배경 : 오리진 서버에서 제공하는 HTML 페이지는 변경되지 않습니다. 모든 동적 컨텐츠는 페이지가 사용자의 브라우저에로드 된 후 JavaScript를 통해 다운로드됩니다. JavaScript에서 파생 된 동적 내용은 URL의 쿼리 문자열에 부분적으로 의존하지만 쿼리 문자열 자체는 원래 다운로드 한 HTML 내용에 영향을 미치지 않습니다. 따라서 다음 URL은 모두 브라우저에서 JavaScript에 의해 작동되기 전에 원본에서 정확히 동일한 HTML을 생성 합니다.

https://www.example.com/private/my-investments?portfolioID=296

https://www.example.com/private/my-investments?portfolioID=325

https://www.example.com/private/my-investments?portfolioID=319

질문 : CloudFlare가 기본적으로 HTML을 캐시하지 않는 경우 https://www.example.com/private/my-investments 의 단일 캐시 사본이 모든 사용자에게 반환 되도록 페이지 규칙을 어떻게 구성해야합니까? ? 내가 시도한 것은 다음과 같습니다.

"CACHE EVERYTHING :" 'Cache Everything'지시문을 사용하면 HTML이 캐시되지만 (좋은) 전체 쿼리 문자열을 캐시 키의 일부 (나쁜)로 사용합니다. 따라서 사용자가 다음 URL을 방문하면 ...

https://www.example.com/private/my-investments?portfolioID=296

... 그리고 10 초 후에 다음과 같이 다른 쿼리 문자열을 사용하여 동일한 URL에 도달합니다.

https://www.example.com/private/my-investments?portfolioID=325

... CloudFlare는 후자의 요청을 캐시 MISS (cf-cache-status : MISS)로 취급하고 다시 오리진 서버에 도달합니다. 이는 원본에서 반환 된 HTML이 두 URL에서 동일하다는 사실에도 불구하고

"IGNORE QUERY STRING CACHING :" "IGNORE QUERY STRING CACHING"옵션을 선택하여이 문제를 해결할 것이라고 생각했습니다. 그러나 페이지 규칙에서이 옵션을 사용하면 HTML이 전혀 캐시되지 않습니다. .js, .css 및 .png 파일 만 캐시됩니다. 그리고 다시 한 번 HTML 데이터에 대한 모든 단일 호출에 대해 내 원점을 얻습니다. :(

나는 분명한 것을 놓치고 있어야한다고 생각합니다. 이견있는 사람?

업데이트 : 내가 당신에게 달릴 아이디어가있었습니다. 내부 URL 체계를 '대신'# '을 사용하도록 변경하여이 문제를 해결할 수 있습니까? 따라서 같은 URL 대신 ...

https://www.example.com/private/my-investments?portfolioID=296

.. 나는 다음과 같은 것을 사용합니다 :

https://www.example.com/private/my-investments#portfolioID=296

이렇게하면 쿼리 문자열 파라미터가 CloudFlare로 전혀 전송되지 않습니다. 어떻게 생각하십니까?

페스 투스


"?"대신 "#"사용 URL에서 문제를 해결했습니다. Sysops는 계속해서 내 질문을 삭제할 수 있습니다.
Festus Martingale

4
다른 사람들은 당신이 여기에서 알아 낸 것을 통해 배울 수 있으므로, 위에서 한 것을 답변으로 제공하고 (가능하면 약간의 정교하게) 가능할 때 그것을 받아 들일 수 있습니다. 감사.
dan

답변:


4

(답변으로 질문을 표시하기 위해 @Festus Martingale에 대한 답변이 추가되었습니다).

로 대체하면 문제 ?#해결되어 쿼리 문자열이 해시 조각으로 표시 될 때 cloudflare로 전송되지 않습니다.


제 이름은 페스 투스입니다. 나는 이것을 대답으로 표시했다.
Festus Martingale
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.