programing

장고의 컬렉션 스태틱은 무슨 의미가 있습니까?

instargram 2023. 8. 20. 10:15
반응형

장고의 컬렉션 스태틱은 무슨 의미가 있습니까?

장고에서 관례는 앱에 특정한 모든 정적 파일(예: css, js)을 정적이라고 하는 폴더에 넣는 것입니다.구조는 다음과 같습니다.

mysite/
    manage.py
    mysite/ --> (settings.py, etc)
    myapp/ --> (models.py, views.py, etc)
        static/

mysite/settings.py소유자:

STATIC_ROOT = 'staticfiles'

명령을 실행하면 다음과 같습니다.

python manage.py collectstatic   

다음 폴더를 만듭니다.staticfiles루트 레벨에서 (같은 디렉토리)myapp/)

이게 무슨 의미가 있습니까?제 모든 정적 파일의 복사본을 만드는 것이 아닌가요?

여러 앱의 정적 파일을 단일 경로로 수집

글쎄요, 하나의 장고 프로젝트는 여러 앱을 사용할 수 있기 때문에, 거기에 있는 동안 당신은 하나의 앱만 가지고 있습니다.myapp실제로 그럴 수도 있습니다.myapp1,myapp2,기타

개별 앱 내부에서 단일 폴더로 복사하여 프런트 엔드 웹 서버(예: nginx)를 해당 단일 폴더로 가리킬 수 있습니다.STATIC_ROOT여러 경로의 정적 파일을 제공하도록 웹 서버를 구성하는 대신 단일 위치에서 정적 파일을 제공합니다.

매니페스트 정적 파일 저장소를 사용하는 영구 URL

버전 관리를 위해 파일 이름에 MD5 해시가 추가되는 것에 대한 참고 사항:기본 동작의 일부가 아닙니다.collectstatic,~하듯이settings.STATICFILES_STORAGE기본값:StaticFilesStorage(그렇게 하지 않는 것)

MD5 해시는 예를 들어 사용하도록 설정하면 시작됩니다.ManifestStaticFilesStorage그 행동이 더해진다는 겁니다

이 저장소의 목적은 사용자 또는 타사 프록시 서버가 캐시하기 때문에 일부 페이지에서 여전히 해당 파일을 참조하는 경우에 대비하여 이전 파일을 계속 제공하는 것입니다.또한 배포된 파일에 Expires 헤더를 적용하여 이후 페이지 방문 시 로드 시간을 단축하려는 경우에도 매우 유용합니다.

장고 정적 파일은 여러 위치에 있을 수 있습니다.다음으로 제공되는 파일입니다./static/img/icon.png많은 곳에서 올 수 있습니다.기본적으로:

  • FileSystemFinder을 찾을 것입니다img/icon.png각각의STATICFILES_DIRS,
  • AppDirectoriesFinder을 찾을 것입니다img/icon.png에서static각 폴더의 하위 폴더INSTALLED_APPS이를 통해 장고 관리자와 같은 라이브러리가 자신의 정적 파일을 앱에 추가할 수 있습니다.

이제: 이 기능은 실행할 경우에만 작동합니다.manage.py runserverDEBUG=1을 사용합니다.라이브에서 장고 프로세스는 더 이상 정적 자산을 제공하지 않습니다.이것들을 제공하기 위해 장고를 사용하는 것은 비효율적일 것입니다, 그것을 위한 더 전문적인 도구들이 있습니다.

대신 다음과 같은 작업을 수행해야 합니다.

  • 모든 앱에서 모든 정적 파일 찾기
  • 모든 디렉토리를 포함하는 단일 디렉토리 구축
  • 어딘가에 a 어가에업드로딘(a)).static 또는 저장소의 )에 저장됩니다.
  • : nginx하여 "nginx"를 제공합니다./static/*해당 디렉토리에서 직접 다른 요청을 장고로 리디렉션합니다.

collectstatic는 이 디렉터리를 배포 스크립트에 직접 연결할 수 있도록 미리 준비된 스크립트입니다.

프로덕션 설치에서 영구 URL을 사용하려고 합니다.파일 내용이 변경되지 않는 한 URL은 변경되지 않습니다.

이것은 장고에서 웹 페이지를 열 때 고객이 컴퓨터에 잘못된 버전의 CSS 또는 JS 파일을 가지고 있는 것을 방지하기 위한 것입니다.Django 정적 파일은 파일 변경을 감지하고 그에 따라 URL을 업데이트하므로 CSS 또는 JS 파일이 변경되면 웹 브라우저에서 새 버전을 다운로드합니다.

이는 일반적으로 다음 기간 동안 파일 이름에 MD5 해시를 추가하여 수행됩니다.collectstatic 뛰다, 뛰다, 뛰다, 뛰다, 뛰다

편집: 여러 앱에 대한 관련 답변도 참조하십시오.

사이트 내에 여러 장고 앱이 있을 때 유용합니다.

collectstatic그러면 모든 앱에서 정적 파일을 한 곳에 수집하여 프로덕션 환경에서 제공할 수 있습니다.

언급URL : https://stackoverflow.com/questions/34586114/whats-the-point-of-djangos-collectstatic

반응형