Django-compressor: CACHE의 μ••μΆ• 파일용 404

에 λ§Œλ“  2017λ…„ 05μ›” 07일  Β·  6μ½”λ©˜νŠΈ  Β·  좜처: django-compressor/django-compressor

django-compressor둜 μƒμ„±λœ νŒŒμΌμ— μ ‘κ·Όν•  수 μ—†μŠ΅λ‹ˆλ‹€. staticfiles/CACHE/ μ—μ„œ μƒμ„±λ˜μ§€λ§Œ νŽ˜μ΄μ§€λ₯Ό λ‘œλ“œν•˜λ©΄ λ‹€μŒκ³Ό 같이 ν‘œμ‹œλ©λ‹ˆλ‹€.

GET https://site.com/de/static/CACHE/css/5e257aa688ab.css/ 404 (Not Found)
GET https://site.com/de/static/CACHE/js/3f1c59956fa3.js/ 404 (Not Found)

μ°Έκ³ : 원본 λ§ν¬λŠ” 404 νŽ˜μ΄μ§€λ‘œ λ¦¬λ””λ ‰μ…˜λ˜λ―€λ‘œ URL에 /de/ κ°€ μžˆμŠ΅λ‹ˆλ‹€. μ†ŒμŠ€ μ½”λ“œμ—μ„œ λ‹€μŒ 블둝은 μ •ν™•ν•©λ‹ˆλ‹€.

<link rel="stylesheet" href="/static/CACHE/css/5e257aa688ab.css" type="text/css" />
<script type="text/javascript" src="/static/CACHE/js/3f1c59956fa3.js"></script>

django-sekizai 와 그에 λ”°λ₯Έ ν›„μ²˜λ¦¬κΈ° compressor.contrib.sekizai.compress λ₯Ό μ‚¬μš©ν•œλ‹€λŠ” 점은 μ£Όλͺ©ν•  κ°€μΉ˜κ°€ μžˆμŠ΅λ‹ˆλ‹€.

λ‚΄ μ„€μ •:

STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'

COMPRESS_STORAGE = 'compressor.storage.GzipCompressorFileStorage'
COMPRESS_URL = STATIC_URL
COMPRESS_ENABLED = True

STATIC_ROOT = '/app/staticfiles/'  # usually computed, ends up here
STATIC_URL = '/static/'

STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
    # Django-Bower
    'compressor.finders.CompressorFinder',
)

ν…œν”Œλ¦Ώ νƒœκ·Έ:

{% render_block "css" postprocessor "compressor.contrib.sekizai.compress" %}
{% render_block "js" postprocessor "compressor.contrib.sekizai.compress" %}

λˆ„κ΅°κ°€ λ‚˜λ₯Ό λ„μšΈ 수 μžˆμŠ΅λ‹ˆκΉŒ? λ‚˜λŠ” μ§€κΈˆ 3 일 λ™μ•ˆ 이것과 μˆ˜λ§Žμ€ μ‹œκ°„ λ™μ•ˆ λΆ™μ–΄ μžˆμŠ΅λ‹ˆλ‹€ ...

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

@oesah , κ°μ‚¬ν•©λ‹ˆλ‹€. λ‚˜λŠ” λ˜‘κ°™μ€ λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€. λ‚˜λŠ” 이것이 μ••μΆ•κΈ° λ¬Έμ œκ°€ μ•„λ‹ˆλ©° 이 μŠ€λ ˆλ“œκ°€ 이제 λ‹«ν˜”λ‹€λŠ” 것을 μ•Œκ³  μžˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ ν™”μ΄νŠΈλ…Έμ΄μ¦ˆμ— λŒ€ν•œ 이 토둠을 μ‹œμž‘ν–ˆλ‹€λ©΄ 링크λ₯Ό κ²Œμ‹œν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ‚˜λŠ” 이 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ λͺ‡ μ‹œκ°„μ„ λ³΄λƒˆκ³  이 μŠ€λ ˆλ“œλŠ” 생λͺ…μ˜ μ€μΈμ΄μ—ˆμŠ΅λ‹ˆλ‹€!

λͺ¨λ“  6 λŒ“κΈ€

μ••μΆ•κΈ°λ₯Ό λ‘œμ»¬μ—μ„œ ν™œμ„±ν™”ν•˜λ©΄ μ™„λ²½ν•˜κ²Œ μž‘λ™ν•©λ‹ˆλ‹€! CACHE ν΄λ”μ—μ„œ νŒŒμΌμ„ 찾을 수 μ—†λŠ” 것은 μ„œλ²„μ— μžˆμ„ 뿐이며 λ‹€λ₯Έ λͺ¨λ“  것은 찾을 수 μ—†μŠ΅λ‹ˆλ‹€.

Ok 또 λ‹€λ₯Έ 발견: μ„Έν‚€μžμ΄ + ν™”μ΄νŠΈλ…Έμ΄μ¦ˆ + μ»΄ν”„λ ˆμ„œμ˜ μ‘°ν•©μœΌλ‘œ 인해 λ¬Έμ œκ°€ λ°œμƒν•˜λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€. Whitenoise DocsλŠ” "_μ„±λŠ₯ 및 λ³΄μ•ˆμƒμ˜ 이유둜 WhiteNoiseλŠ” μ‹œμž‘ ν›„ μƒˆ νŒŒμΌμ„ ν™•μΈν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€(Django DEBUG λͺ¨λ“œλ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” ν•œ). λ”°λΌμ„œ λͺ¨λ“  정적 νŒŒμΌμ€ 미리 생성해야 ν•©λ‹ˆλ‹€. Django Compressorλ₯Ό μ‚¬μš©ν•˜λŠ” 경우 이것이 κ°€λŠ₯ν•©λ‹ˆλ‹€. μ˜€ν”„λΌμΈ μ••μΆ• κΈ°λŠ₯을 μ‚¬μš©ν•˜μ—¬ μˆ˜ν–‰λ©λ‹ˆλ‹€._" κ·Έλž˜μ„œ SekizaiλŠ” μ‚¬μš©μžκ°€ νŽ˜μ΄μ§€λ₯Ό μ—΄ λ•Œλ§ˆλ‹€ μ‹€μ‹œκ°„μœΌλ‘œ μ••μΆ•ν•©λ‹ˆλ‹€(μ„Έν‚€μžμ΄μ˜ νŠΉμ„±μœΌλ‘œ 인해 μ˜€ν”„λΌμΈ 압좕은 μ‚¬μš©ν•  수 μ—†μŒ). WhitenoiseλŠ” λ‹€μ‹œ κ²€μƒ‰ν•˜μ§€ μ•ŠμœΌλ―€λ‘œ 파일이 μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ”λ‹€κ³  κ°€μ •ν•©λ‹ˆλ‹€. νŽ˜μ΄μ§€λ₯Ό μ—΄κ³  파일이 μƒμ„±λœ ν›„ Djangoλ₯Ό λ‹€μ‹œ μ‹œμž‘ν•˜λ©΄ μž‘λ™ν•©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ λ‹€λ₯Έ νŽ˜μ΄μ§€λ‘œ μ΄λ™ν•˜λ©΄ λ™μΌν•œ ν”„λ‘œμ„ΈμŠ€λ₯Ό λ‹€μ‹œ μˆ˜ν–‰ν•΄μ•Ό ν•©λ‹ˆλ‹€(νŽ˜μ΄μ§€λ₯Ό μ—΄κ³  λ‹€μ‹œ μ‹œμž‘). 그런 λ‹€μŒ μ œλŒ€λ‘œ μ°ΎμŠ΅λ‹ˆλ‹€ ...

문제λ₯Ό ν•΄κ²°ν•˜λŠ” 방법에 λŒ€ν•œ 아이디어가 μžˆμŠ΅λ‹ˆκΉŒ? λ‹€μŒ ν…ŒμŠ€νŠΈλŠ” μ••μΆ• ν›„μ²˜λ¦¬κΈ°μ™€ ν•¨κ»˜ μ„Έν‚€μžμ΄λ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” κ²ƒμ΄μ§€λ§Œ μ„Έν‚€μžμ΄ 및 μ‹€μ‹œκ°„ 정적 μš”μ²­κ³Ό ν•¨κ»˜ μž‘λ™ν•˜λŠ” μ†”λ£¨μ…˜μ„ μ›ν•©λ‹ˆλ‹€.

κ·Έλž˜μ„œ whitenoise.django.DjangoWhiteNoise 을 μˆ˜μ •ν•˜κ³  λ³€κ²½ν–ˆμŠ΅λ‹ˆλ‹€.

    self.autorefresh = settings.DEBUG
    self.use_finders = settings.DEBUG

μ—κ²Œ

    self.autorefresh = True
    self.use_finders = True

이제 μž‘λ™ν•©λ‹ˆλ‹€. μ„±λŠ₯ 문제λ₯Ό λ¬΄μ‹œν•˜κ³ (아직 λˆˆμΉ˜μ±„μ§€ λͺ»ν•œ λ°˜λ©΄μ— Google Page Speed ​​InsightλŠ” μžλ™ μƒˆλ‘œ 고침이 ν™œμ„±ν™”λœ μƒνƒœμ—μ„œ ν•œ 가지 더 포인트λ₯Ό μ€λ‹ˆλ‹€..) λ³΄μ•ˆ λ¬Έμ œλŠ” λ¬΄μ—‡μž…λ‹ˆκΉŒ? λ‚˜λŠ” 그것을 ν”Όν•  수 μžˆμŠ΅λ‹ˆκΉŒ? Whitenoiseκ°€ μ‹€μ‹œκ°„μœΌλ‘œ μƒμ„±λœ 정적(예: django-compressor CACHE)도 μ²˜λ¦¬ν•  수 μžˆλ‹€λ©΄ λ†€λžμŠ΅λ‹ˆλ‹€.

λ‚΄ μž…λ ₯이 λ‹€λ₯Έ μ‚¬λžŒμ΄ 이것을 λ°œκ²¬ν•˜λŠ” 데 도움이 되길 λ°”λžλ‹ˆλ‹€.

μ•ˆλ…•,

이것은 μ••μΆ•κΈ° λ¬Έμ œκ°€ μ•„λ‹™λ‹ˆλ‹€. 이것은 stackoverflow λ˜λŠ” 이와 μœ μ‚¬ν•œ 것(λ˜λŠ” μ•„λ§ˆλ„ whitenoise 지원 포럼)에 μ†ν•©λ‹ˆλ‹€.

그래, λ‚˜λŠ” κ·Έ 결둠에 λ„λ‹¬ν–ˆλ‹€ :) ν™”μ΄νŠΈλ…Έμ΄μ¦ˆμ—μ„œ μ‚¬λžŒλ“€μ—κ²Œ λ¬Όμ–΄λ³Ό 것이닀. 감사 ν•΄μš”

@oesah , κ°μ‚¬ν•©λ‹ˆλ‹€. λ‚˜λŠ” λ˜‘κ°™μ€ λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€. λ‚˜λŠ” 이것이 μ••μΆ•κΈ° λ¬Έμ œκ°€ μ•„λ‹ˆλ©° 이 μŠ€λ ˆλ“œκ°€ 이제 λ‹«ν˜”λ‹€λŠ” 것을 μ•Œκ³  μžˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ ν™”μ΄νŠΈλ…Έμ΄μ¦ˆμ— λŒ€ν•œ 이 토둠을 μ‹œμž‘ν–ˆλ‹€λ©΄ 링크λ₯Ό κ²Œμ‹œν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ‚˜λŠ” 이 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ λͺ‡ μ‹œκ°„μ„ λ³΄λƒˆκ³  이 μŠ€λ ˆλ“œλŠ” 생λͺ…μ˜ μ€μΈμ΄μ—ˆμŠ΅λ‹ˆλ‹€!

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰