나는 오프라인에서도 사용할 수 있도록해야하는 응용 프로그램이 있습니다. Javascript/Jquery를 사용하여 서버에서 동적 컨텐트를 만드는 데는 아무런 문제가 없습니다. 그러나 기본 페이지 레이아웃에 문제가 있습니다.온라인 및 오프라인 응용 프로그램에 대해 동일한 HTML 페이지를 제공하는 방법은 무엇입니까?
이 지금 내 server-only
페이지 (내가 Coldfusion
을 사용하고 있습니다) 다음과 같이 구성되어 있습니다 :
head
로 첫 페이지를로드하지하고 다시는 헤더를 사용
Jquery Mobile
을 사용하고
<cfsavecontent variable="renderedResults">
<!--- Doctype --->
<cfinclude template="../templates/tmp_pagetop.cfm">
<cfoutput><head></cfoutput>
<cfif NOT isAjaxRequest()>
<!--- page header with all meta/js/css/icons... --->
<cfinclude template="../templates/tmp_pageheader.cfm">
</cfif>
<cfoutput>
<title>#variables.title# | #tx_select_title#</title>
</head>
<body>
// page
</body>
</html>
</cfoutput>
</cfsavecontent>
<!--- COMPRESS --->
<cfscript>
compressedHTML = reReplace(renderedResults, "\>\s+\<", "> <", "ALL");
compressedHTML = reReplace(compressedHTML, "\s{2,}", chr(13), "ALL");
compressedHTML = reReplace(compressedHTML, "\s{2,}", chr(09), "ALL");
variables.alredayBinary = "false";
</cfscript>
<!--- GZIP --->
<!--- SET HEADER --->
<!--- SEND BACK --->
, Ajax를 통해 후속 페이지를 요청할 때. 따라서 Ajax를 통해 페이지가 요청되었는지 여부를 확인하고 있기 때문에 JQM에서 사용하지 않기 때문에 후속 페이지 요청시 8k 헤더를 클라이언트로 보내지 않습니다.
<cfif structKeyExists(cgi, "HTTP_USER_AGENT") AND findNoCase("facebook", cgi.http_user_agent) NEQ 0>
<cfoutput>
<meta property="og:title" content="#variables.title#"/>
<meta property="og:type" content="website"/>
<meta property="og:url" content="#variables.base#" />
<meta property="og:site_name" content="#variables.user_firma#"/>
<meta property="og:description" content="#variables.user_fbds#"/>
<meta property="fb:admins" content="#variables.user_fbadmin#" >
</cfoutput>
</cfif>
그래서 난 단지 페이지를 페이스 북에 의해 요청 된 페이스 북 오픈 그래프 메타를 포함 :
또한, 내 헤더 템플릿은이 같은 조건 내용을 많이 포함되어 있습니다. 이렇게하면 Google에서 요청할 경우 페이지가 W3C 유효성 검사를 통과합니다.
지금 도전하십시오 ...이 정적 및 오프라인에서 사용 가능하게 만드는 방법.
저는 잠시 생각해 봤지만 좋은 해결책을 찾지 못했습니다. 내가
- 전체 페이지를 봉사하는 경우 = 나는 W3C 유효성 검사에 실패한 온라인 사용자가 모든 페이지 요청
- 에 (예, 여전히 gzip으로 압축 그러나 것) 8K 처벌을받을 정말 =하지 헤더 옵션없이 페이지를 봉사
- 두 버전의 페이지를 제공합니다 (오프라인 용 1 개, 오프라인 용 용). 오프라인 페이지가 캐싱되며 사용자가 온라인 상태 인 경우에도 캐시에서 해당 버전을 "멈추게"됩니다 ( ).
- 첫 번째 페이지를 전체 머리글로 = 첫 번째 페이지 이외의 페이지에서 시작하는 사용자는 잘못된 페이지 (머리글 없음)에 있습니다. 메인 페이지 또한 검증에 실패합니다.
나는 모든 것을 가질 수는 없지만, 가능한 최선의 방법으로 어떤 방법을 사용할 수 있는지 알고 싶습니다.
감사합니다.
오프라인으로 무엇을 의미합니까? – blueberryfields
인터넷 연결없이 실행 중입니다. – frequent