전체 웹 페이지(이미지 등)를 단일 아카이브에 저장하는 데 가장 적합한 "파일 형식"은 무엇입니까?[닫은]

StackOverflow https://stackoverflow.com/questions/260058

문제

저는 타임캡슐처럼 단일 이미지와 텍스트 파일을 한 곳에 저장하는 프로젝트를 진행하고 있습니다.이제 대부분의 프로젝트를 DOC, PPT, ODF와 같은 하나의 파일로 저장할 수 있습니다.그러나 완전한 웹페이지 캔트 -- 별도의 HTML 파일과 데이터 폴더로 저장됩니다. 단일 아카이브에 웹 페이지를 저장하고 싶은데 여러 솔루션이 있지만 "표준"은 없습니다.HTML 아카이브에 가장 적합한 형식은 무엇입니까?

  • 마이크로소프트는 MHTML -- 기본적으로 MIME HTML 이메일 메시지로 정확하게 인코딩된 파일입니다.이는 이미 기존 표준을 기반으로 하며 자체 MHTML은 다음과 같이 제안되었습니다. RFC2557.이것은 훌륭한 아이디어이며 1999년부터 "제안된 표준"이라는 점을 제외하면 영원히 존재해 왔습니다.게다가 IE 이외의 구현은 번거롭습니다.IE와 Opera가 이를 지원합니다.번거로운 확장 기능을 갖춘 Firefox 및 Safari.

  • 모질라는 Mozilla 아카이브 형식 -- 기본적으로 RDF로 저장된 메타데이터가 포함된 마크업과 이미지가 포함된 ZIP 파일입니다.멋진 아이디어입니다. Winamp는 스킨에 대해 이 작업을 수행하고 내장된 이미지에 대해 ODF 및 OOXML을 수행합니다.1을 제외하고는 이것을 좋아합니다.Mozilla를 제외하고는 누구도 그것을 사용하지 않습니다. 2.이를 지원하는 유일한 확장은 Firefox 1.5 이후로 업데이트되지 않았습니다.

  • 데이터 URI 더욱 인기를 얻고 있습니다.MHTML 또는 MAF와 같은 외부 위치를 참조하는 대신 파일을 base64로 HTML 마크업으로 직접 인코딩합니다.보기에 따라 파일이 다음과 같으므로 간소화됩니다. 오른쪽 마크업이 있는 곳.하지만 아직은 지지율이 다소 약한 편입니다.Firefox, Opera 및 Safari는 문제 없이 이를 지원합니다.즉, 시장 리더, IE8에서만 지원하기 시작했고 그 이후에도 제한이 있었습니다.

  • 그럼 당연히 있죠 "전체 웹페이지 저장" HTML 마크업이 저장되는 위치 "savedpage.html" 그리고 파일은 별도로 "savedpage_files" 폴더.Afaik, 다들 이렇게 해요.잘 지원됩니다.그러나 두 개의 별도 요소를 처리해야 하는 것은 간단하지도 않고 간소화되지도 않습니다. 모두.내 프로젝트에는 해당 항목이 있어야 합니다. 단일 아카이브.

명심하세요 브라우저 지원 그리고 페이지 편집의 용이성, 웹페이지를 단일 아카이브에 저장하는 가장 좋은 방법이 무엇이라고 생각하시나요? "표준"으로 가장 좋은 것은 무엇입니까?아니면 그냥 HTML 파일과 별도의 폴더를 처리해야 할까요?나는 내 프로젝트를 위해 ~할 수 있었다 그걸 지지하지만 나는 그것을 피하는 것이 가장 좋습니다.

도움이 되었습니까?

해결책

내가 가장 좋아하는 것은 ZIP 형식입니다.왜냐하면:

  • 목적에 아주 잘 맞습니다
  • 잘 문서화되어 있습니다.
  • 생성하거나 읽는 데 사용할 수 있는 구현이 많이 있습니다.
  • 사용자는 단일 파일을 쉽게 추출하고, 변경하고, 아카이브에 다시 넣을 수 있습니다.
  • 거의 모든 주요 운영 체제(Windows, Mac 및 대부분의 Linux)에는 ZIP 프로그램이 내장되어 있습니다.

대안에는 모두 몇 가지 결함이 있습니다.

  • MHTML을 사용하면 쉽게 편집할 수 없습니다.
  • 데이터 URI를 사용하면 구현이 얼마나 어려울지 모르겠습니다.(ZIP을 사용하면 3년 전에는 PHP로도 할 수 있었는데...)
  • 항목을 별도의 파일로 저장하는 옵션에는 잘못될 수 있는 항목이 너무 많아 아카이브를 엉망으로 만들 수 있습니다.

다른 팁

PDF는 거의 모든 플랫폼의 거의 모든 브라우저에서 지원되며 콘텐츠와 이미지를 단일 파일에 저장합니다.올바른 도구를 사용하여 편집할 수 있습니다.이는 확실히 이상적이지는 않지만 고려해 볼 수 있는 옵션입니다.

파일 형식만의 문제는 아닙니다.또 다른 중요한 질문은 정확히 무엇을 저장하고 싶은지?그것은:

  1. 전체 페이지를 참조된 모든 리소스(이미지)와 함께 있는 그대로 저장하십시오. CSS와 자바 스크립트?

  2. 특정 시점에 렌더링된 페이지를 캡처합니다.정적 웹 페이지 DOM의 렌더링 된 상태 이미지?

MAF, MHTML, file+dir 등 브라우저의 최신 "다른 이름으로 페이지 저장" 기능은 첫 번째 방법을 시도합니다.이는 궁극적으로 결함이 있는 접근 방식입니다.

웹 페이지는 쉽게 저장할 수 있는 정적 문서보다 로컬 애플리케이션이라는 점을 잊지 마세요.잠재적인 문제:

  1. 한 페이지는 실제로 JS에 의해 동적으로 빌드되는 여러 페이지이므로 사용자 상호 작용이 필요합니다. 원하는 상태로 만들려면

  2. AJAX 응용 프로그램은 원격 서비스를 렌더링하여 원격 통신을 수행할 수 있습니다 오프라인 보기에는 사용할 수 없습니다.

  3. 자바스크립트 코드의 숨겨진 링크.그러면 이러한 리소스는 저장된 페이지의 일부가 아닙니다.JS 코드를 구문 분석해도 이를 발견하지 못할 수도 있습니다.코드를 실행해야 합니다.

  4. 기본 html 요소의 위치조차도 다시 계산 될 수 있으며 다음과 같이 동적으로 계산 될 수 있습니다. JS이며 로컬에서 다시 만드는 것이 항상 가능하거나 쉬운 것은 아닙니다.

  5. 일종의 JS 메모리 덤프가 필요하고 페이지를 원하는 상태로 가져 오려면로드해야합니다. 당신은 저장하기를 희망했습니다

그리고 더 많은 문제들...

크롬 확인 단일 파일 확대.이미 언급된 데이터 URI를 사용하여 이미지가 인라인된 하나의 HTML 파일에 웹 페이지를 저장합니다.나는 그것을 많이 테스트하지 않았기 때문에 "휘발성" Ajax 페이지를 얼마나 잘 처리하는지 말할 수 없습니다.

zip 파일을 사용하세요.

zip 파일을 임시 디렉토리에 추출하고 브라우저에 index.html 파일을 로드하는 프로그램/스크립트를 언제든지 만들 수 있습니다.index.ini/txt 파일을 사용하여 추출 시 로드해야 하는 파일을 지정할 수도 있습니다.

기본적으로 Mozilla Archive 형식과 같은 것을 원하지만 로드할 파일을 지정하기 위한 불필요한 rdf 쓰레기는 없습니다.

MHT 파일은 좋지만 일반적으로 base64를 사용하여 파일을 삽입하므로 파일 크기가 원래 크기보다 커집니다(데이터 URI도 같은 방식입니다).첨부 파일을 바이너리로 추가할 수 있지만 16진수 편집기를 사용하여 수동으로 추가하거나 도구를 만들어야 하며 클라이언트의 지원이 좋지 않을 수 있습니다.

물론 브라우저가 생성하는 것을 사용하려면 MHT(적어도 Opera 및 IE)가 더 나을 수 있습니다.

zip 파일 이외의 다른 것을 사용할 변명의 여지가 없습니다

글쎄요, 브라우저 지원과 편집 용이성이 가장 큰 관심사라면 단일 파일 형식에 대한 편집기를 제공하고 브라우저에서 그다지 좋은 지원을 제공하지 않는 한 파일+디렉토리 접근 방식을 고수하고 있다고 생각합니다.

내용을 압축하여 단일 파일을 만들 수 있습니다.쉽게 처리하기 위해 상위 디렉터리를 만들 수도 있습니다.

문제는 html이 하향식이 아니라 상향식이라는 것입니다.내 상자에 "전체 웹 페이지(이미지 등)를 단일 아카이브에 저장하는 데 가장 적합한 "파일 형식"은 무엇입니까?"로 저장된 파일 이름을 살펴보십시오.- 스택 Overflow.html"

'|'를 추가하면 예비 드라이브에 복사 및 붙여넣기 백업을 수행하는 데 문제가 있습니다.결국 당신은 끝납니다.저장하기 위해 파일 이름을 자르는 중입니다.수십/아마도 수백 개의 동일한 index.html 또는 index.php가 내 드라이브를 복잡하게 만들고 있습니다.

부분적인 해결책은 자체 CMS를 작성하고 스크립트를 사용하여 모든 관련 파일을 플랫 파일 데이터베이스에 매핑한 다음 fileName, size, mtime 및 md5를 사용하여 각 파일에 대한 고유 ID를 얻는 것입니다.100,000개 또는 1,000,000개의 레코드를 허용하는 플랫 파일 인덱스를 만듭니다.한 번 쓰고 여러 번 사용하는 것이 목표입니다.따라서 실제 CMS가 필요하며 files_archive에 들어가는 콘텐츠(예: index8765432.html)를 기반으로 하는 고유 ID가 필요합니다.다른 사람들도 마찬가지입니다.그런 다음 저장된 원본 HTML에서 files_archive로 비파괴적으로 심볼릭 링크를 연결하고 필요한 경우 PHP 또는 대체 스크립트를 사용하여 파일을 다시 만들 수 있습니다.제가 당신과 같은 지점에 있기 때문에 그것이 효과가 있을지는 모르겠습니다. 아마도 일주일 후에는 확실히 알게 될 것입니다.보다 유용한 접근 방식은 비즈니스 또는 개인 요구 사항 및 관련 작업을 기반으로 하향식 구조를 갖는 것입니다.따라서 원본 콘텐츠를 보존하기 위해 파일은 위에서 아래로 정리되지만 외부 파일은 아래에서 위로 정리될 수 있습니다.저는 웹 3.0 서비스에 관심이 있으며, 기계 간 상호 작용이 가까워질수록 정보를 구조화해야 할 필요성도 커집니다.모든 것을 하나의 파일로 묶는다는 아이디어를 다시 생각해 볼 때가 되었을 것입니다.따라서 하향식 솔루션을 사용하면 수백 개가 아닌 하나의 파일을 수정할 수 있는데 왜 번들로 수백 개의 main.css가 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top