2012-10-12 7 views
1

브라우저 및 프록시 캐시는 URL을 캐시 키로 사용합니다. pjax에서 URL은 부분 Pjax 페이지와 전체 페이지를 모두 요청하는 데 사용되므로 두 응답이 동일한 키 아래에 캐시됩니다. 전체 페이지가 아닌 부분이로드되고 오류가 발생할 수 있으므로 오류가 발생합니다.pjax (jquery-pjax)로 HTTP 캐싱

어떻게 해결할 수 있습니까?

내가 생각할 수있는 유일한 점은 URL에 pjax 태그를 추가하는 것입니다. pjax가이를 수행하는 방법을 제공합니까?

감사합니다.

p.s 레일즈를 사용하고 있습니다. 누군가가 레일스에서 ​​우아한 방법을 사용하고 있습니다.

답변

2

jquery-pjax은 XMLHttpRequest의 URL에 _pjax=true을 추가합니다.

대체 방법은 각 URL마다 하나의 페이지 만 사용하는 것입니다.

전체 페이지 만 보내고 fragment 옵션을 사용하면 jquery-pjax를 통해이 작업을 수행 할 수 있습니다.

더 유연한 접근 방식은 최소한의 페이지 만 보내고 AJAX를 사용하여 페이지 배너, 탐색, 광고 등 모든 공유 사이트 콘텐츠를 추가하는 것입니다. 대부분의 AJAX는 초기 페이지로드에만 적용되고 그 후에는 pjax이 대신합니다. . 이것은 HTMLDecor의 접근 방식입니다.

+0

Sean, HTMLDecor가 올바른지 보겠습니다. 2 페이지/URL 문제 외에도 PJax와의 주요 차이점은 HTMLDecor가 헤더 내용을 수정할 수 있다는 점입니다. 그것들 이외에도 그들은 같은 일을합니다. "장식"/ 레이아웃을 지정하는 방법은 약간 다릅니다. – EugeneMi

+0

또한 HTMLDecor는 도전적으로 좋은 해결책으로 보입니다 (저는 페이지가 CSS/js로 지정되어 있고 페이지/URL이 1 개 밖에 없다는 사실을 좋아합니다). 그러나 나는 보지 못했다는 사실에 약간 관심이 있습니다. 그것은 다른 어느 곳에서나 사용되고 있습니다. 나는 빡빡한 일정에 있고 나중에 일어나는 예기치 않은 일들을 처리하고 싶지 않습니다. 어떤 사이트를 사용하고 있는지 알고 있습니까? – EugeneMi

+0

[내 블로그] (http://meekostuff.net/blog/)에 HTMLDecor를 사용합니다. 나는 그것을 사용하는 다른 사람을 알지 못한다. 확실히 jquery-pjax를 사용하여 더 많은 지원을받을 것입니다. 레코드의 경우 HTMLDecor은 jquery-pjax보다 훨씬 기능이 뛰어나며 jquery를 사용하지 않으므로 총 JS는 10KB 미만입니다. –

0

레일 4.0에는 이제 터보 링크가 제공됩니다. 터보 링크는 서버에서 전체 페이지를로드 한 다음 페이지를 다시로드하는 대신 본문 & 제목을 업데이트한다는 점을 제외하고는 pjax와 매우 비슷합니다. 서버 측의 수정은 필요하지 않습니다. 서버는 항상 전체 페이지를 반환합니다. 이렇게하면 HTTP 캐싱이 간단 해집니다.