각각 HTML 웹페이지에 해당하는 .php 페이지가 여러 개 있습니다. 각 페이지를 완전히 처리하고 로드하는 데 약 1분 정도 걸립니다. 페이지가 완전히 로드되면 사용자에게 로딩 이미지를 표시하고 싶습니다.
저는 이미지를 먼저 로드하고 .php가 처리되는 동안 기본 콘텐츠를 숨겨 두는 것과 같은 논리적인 방법을 생각했습니다. 일단 PHP가 로드되면 기본 콘텐츠를 추가하는 JavaScript의 트리거 역할을 하는 요소를 에코할 수 있습니다. 콘텐츠의 표시 스타일이 숨김에서 블록으로 변경됩니다. 하지만 아파치가 출력을 표시하려면 먼저 PHP를 로드해야 하기 때문에 실행할 수 없습니다.
제가 본 또 다른 옵션은 전체 페이지를 변경하고 ajax를 사용하여 데이터를 로드하는 것이었지만 그렇게 하려면 모든 .php 코드를 다시 작성해야 하므로 조금 게으릅니다.
누군가 내가 뭘 잘못하고 있는지 또는 이 작업을 수행하는 더 효율적인 방법이 있는지 안내해 줄 수 있기를 바랍니다.
한 가지 전략은 쿠키와 중간 페이지를 사용하는 것입니다. 특정 쿠키 없이 쿠키를 설정한 중간 페이지로 모든 요청을 리디렉션합니다.
애플리케이션 페이지를 수정하지 않고 다른 서버에서 apache htaccess 또는 이에 상응하는 기능을 사용하세요.
쿠키(예: 이미 로드됨)가 존재하는지 htaccess에서 확인하고, 존재하지 않으면 "loading.html"로 리디렉션하고 "loading.html"에서 hasloading=true로 설정한 다음 원래 URL로 리디렉션합니다.
HTTP 리디렉션을 사용하면 예상한 결과를 얻을 수 없으므로 "loading.html"에서 리디렉션에 자바스크립트를 사용하는 것이 매우 중요합니다.
"loading.html"에서 로딩 이미지를 표시하려면 쿠키 hasloading=true를 설정한 다음 원래 URL로 리디렉션되는 onload 이벤트를 사용해야 합니다. onload에서 약간의 지연이 발생하거나 이미지(로드 중)가 없이 정지됩니다. 일부 브라우저에서 이동:
으아아아쿠키가 만료되면 필요에 따라 며칠, 몇 시간 또는 몇 분 동안 "loading.html"이 다시 로드되지 않도록 할 수 있습니다. 또 다른 옵션은 URL별로 쿠키를 설정하는 것입니다.
여러 웹사이트에서 비슷한 구현을 했습니다.
편집자:
구현보다는 전략을 설명하기 위해 이 간단한 예에서는 htaccess를 사용하지 않고 콘텐츠를 로드하기 전에 콘텐츠 페이지에서 첫 번째 리디렉션을 수행합니다.
index.html로 저장:
으아아아loading.html로 저장:
으아아아이 간단한 예는 Firefox에서 로컬(file://...)에서도 작동하지만, Chrome에서는 로컬에서 작동하는지 의심됩니다.