2011-08-22 5 views
0

기본적으로 전체 HTML Blob이 이미 생성 된 후에 만이 데이터를 사용할 수 있다는 점을 제외하고는 서버가 클라이언트에 일부 데이터를 다시 보낼 수있게하려고합니다. 특히, 나는 모든 페이지에 시간에 렌더링 (TTR) 표시를 넣을 : 현재 시간이 첫 번째 구성 요소는 시점까지 렌더링 시작 지점에서 측정되고HTML 외부의 HTTP 응답으로 데이터를 반환 하시겠습니까?

enter image description here

하는 상기 마지막 구성 요소가 렌더링됩니다. 그러나 이것은 메인 HTML Blob이 렌더링되기 전/후에 진행되는 미들웨어 (장고 사용)와 같은 다른 모든 것들에 필요한 시간을 놓치고 있습니다.

최종 포스트 프로세싱 포인트에서 측정 한 경우 최종/html 태그가 이미 완료되었으므로 HTML blob에 TTR 문자열을 추가 할 수 없습니다. 나는 아마도 그것을 삽입하는 영리한 regex-string-replace-thingy를 할 수 있었는데 안에 블럭이 있었지만, 그것은 매우 더럽다고 느꼈다.

나는이 물질이 완료 될 때까지 closing/body/html 태그를 추가하지 않고 단지 이 아닐 수 있지만 나머지는 메인 페이지의 "닫는"태그를 의도적으로 분리해야합니다 페이지의 TTR 표시기를 태그 앞에 넣을 수 있습니다. 를하면서

이있다 어쨌든 내가 완전히 형성 HTML 페이지를 가질 수있다, 그냥 내 TTR의 사업부로 자바 스크립트를 수있는 몇 가지 태그에이 정보가 포함됩니다 최종/몸/html 태그를 압정인가 여전히 유효한 HTML이 될까요? 아니면 HTML Blob과 함께 메타 데이터를 다시 전달할 수있는 방법이 있습니까? 내 Javascript에서 읽고 TTR div에 배치 할 수 있습니까? 아니면이 작업을 수행하는 다른 더 좋은 방법이 있습니까?

답변

0

컨테이너를 생성 할 때 HTML에 넣는 것이 아니라 문서의 다른 곳에 나타나지 않는 문자열로 채워 넣는 것이 어떻겠습니까? 그러면 'post-post-processing'에서 간단히 str_replace() 수 있습니다.

당신의 감정이 용감하다면 sprintf()과 비슷한 것을 시도해 볼 수 있습니다.하지만 sprintf의 변환 사양이 매우 간단하다는 이유로 사실 때때로 이상한 결과가 나올 것이라고 생각합니다. 의도적으로 문서의 어딘가에 나타납니다. 또한 (내 PHP 5.2.17/Win32 이상에서) sprintf()은 하나의 대체 용어로 str_replace()보다 느립니다.

것은 당신이 출력 버퍼링을 당신에게 문자열로 페이지를 생성하고 매우 끝날 때까지 브라우저로 출력을 보내지 않고, 또는 당신이하는 경우 자바 스크립트에서 액세스 할 수있는 쿠키를 설정하고 브라우저가 작업을 수행 할 수 document.getElementById('an_element').innerHTML = cookieValue; onload하지만 Javascript를 사용하면 길을 따라 혼란스러워 지거나 또 일반적으로 잘못 될 수있는 다른 레이어를 제공한다고 말하고 싶습니다.

이미 콘텐츠를 전송했기 때문에 HTML 렌더링이 끝날 때까지 헤더를 설정할 수 없다면 정적으로 페이지에 데이터를 배치 할 때와 동일한 문제가 발생합니다. 이후에 <script>을 추가 할 수 있습니다. </body></html> ...

+0

흠, 나는 쿠키 사용을 생각하지 않았습니다. 그것들은 (처음 보았을 때) 내가 뭘 찾고 있었는지, 나는 그들을 영구히 사용하지 않고 각 페이지마다 새로운 것을 보내지 않는다. 그 (것)들 사용에 어떤 아래쪽 있는가? 키/값 문자열 사전으로 사용하면이 데이터를 기본 HTML blob에서 분리하는 완벽한 방법 인 것 같습니다. 나중에 해당 데이터를 적절한 위치의 페이지로 Javascript 할 수 있습니다.이것은 나의 다른 문제들의 무리를 해결할 것이다; 자바 스크립트에 전달하려는 몇 가지 다른 HTML 생성 후 변수가 있습니다. –

+0

쿠키의 주요 단점은 사용자가 쿠키를 사용 중지 할 수 있다는 것입니다. 그 외에도, 그들은 상당히 신뢰할 수 있고 잘 표준화되어 있습니다. 이것은 모든 브라우저에서 동일한 JS가 작동해야하는 드문 일 중 하나입니다. 대부분의 쿠키 인증 루틴이 작동하는 방식이므로 각 요청마다 새로운 쿠키 값을 보내는 데 아무런 문제가 없어야합니다. 브라우저 어리 석음을 쉽게 고치실 수있는 공간을주기 위해 세션이 끝날 때 쿠키가 만료되도록 설정하고 (set_cookie()의'$ expire' 매개 변수에 '0'을 전달하십시오) 사용자가 브라우저를 닫고 다시 - 그걸 열어. – DaveRandom

+0

'set_cookie()'참조를 긁어 라, 우리가 파이썬을 다루는 걸 잊어 버렸다. 그리고 다른 모든 PHP 참고 자료, lol! – DaveRandom

관련 문제