디스크에서 수정 한 경우에도 lighttpd가 정적 파일을 캐싱하지 못하게하려면 어떻게합니까?


10

정적 파일을 제공하기 위해 lighttpd를 사용하고 있습니다. 정기적으로 업데이트하는 디렉토리에 많은 이미지가 있습니다. 파일 내용이 아닌 수정 날짜뿐만 아니라 파일 내용 (및 파일 크기)도 변경됩니다.

http를 통해 파일에 액세스하면 업데이트가 고려되지 않고 이전 파일을 가볍게 제공합니다. 수동으로 파일 이름을 다른 것으로 바꾸면 lighttpd가 404 오류를 반환하고 파일 이름을 다시 바꾸면 올바른 업데이트 버전을 얻게됩니다. lightty가 정적 파일을 반환하기 위해 자체 캐시 메커니즘을 사용하는 것 같습니다. 불행히도 파일이 수정 될 때이 메커니즘이 자체적으로 업데이트되지 않는 것 같습니다.

Wireshark를 통해 확인했는데 브라우저가 실제로 파일에 대한 요청을하고 있습니다. 브라우저 캐싱 문제는 아닙니다. 빈 캐시에서 요청할 때 200 OK를, 그렇지 않으면 304 Not Modified를 예상대로 반환합니다. 그러나 파일은 실제 마지막 수정 날짜를 반영하지 않는 잘못된 Last-Modified 헤더와 함께 반환됩니다.

어쩌면 내가 모르는 구성 지시어가 있습니까?

lighty에서 반환 된 파일이 디스크에서 변경 한 내용을 직접 반영하거나 캐시를 무효화 할 수 있기를 바랍니다.

이 질문을 따르는 사람을위한 업데이트 : 범인을 찾았습니다. 정적 파일을 업데이트하면 Lighty는 새 내용을 반환하지 않지만 헤더에 새 내용 길이를 반환하므로 가비지가 표시됩니다. mod_compress를 사용하여 파일을 압축하면 mod_compress가 자체 캐싱 시스템을 사용하므로 문제가 해결됩니다. 불행히도 모든 파일을 압축 할 수는 없습니다 (예 : 이미지 파일). 따라서 이것은 부분적인 수정일 뿐이지 만 나중에 다시 연락하여 해결책을 찾을 것입니다.

답변:


6

마침내 문제를 발견했습니다. 그리고 그것은 VirtualBox에서 온 것입니다.

호스트 (Win)에서 파일을 편집 할 때 게스트 (Linux)의 lighttpd는 파일 내용을 올바르게 업데이트하지 않지만 파일 크기를 올바르게 업데이트하므로 잘 리거나 깨진 내용을 반환합니다.

공유 드라이브를 마운트 해제했다가 다시 마운트하거나 게스트에서 직접 파일을 편집하면 문제가 해결되었습니다.

마침내 알아내는 데 6 개월이 걸렸습니다.


3

mod_cache 설치 여부는 언급되어 있지 않습니까? 이 모듈은 설치시 기본적으로 '사용'으로 설정됩니다.

나는 그것을 제안하는 것을 싫어하지만 Etags를 켜는 것이 도움이됩니까?


mod_cache가 설치되지 않았습니다. ETag가 사용 가능하지만 inode는 ETag를 생성하는 데 사용되지 않습니다. inode를 활성화하거나 ETag를 비활성화하려고 시도했지만 아무 소용이 없습니다.
Pixelastic

2

통계 엔진 캐싱을 'disabled'로 설정하십시오.

server.stat-cache-engine = "disable'

고마워, 그러나 이것은 효과가 없다. 그러나 그 지시어를 몰랐으며 나중에 유용 할 수 있습니다.
Pixelastic 2016 년

귀하와 서버 사이에 중개인 프록시가 있습니까? 서버를 다시 시작하고 동일한 파일에 액세스하십시오. mod_compress를 사용하고 있습니까?
Aleksey Korzun

Windows 7 호스트에서 Ubuntu VM을 실행하고 있습니다. Lighty는 VM에 있습니다. 나는 여기에 프록시 문제가있을 것이라고 생각하지 않습니다. 서버를 다시 시작했지만 간단한 캐시는 지워지지 않습니다. mod_compress를 사용하고 있지만 해당 파일에는 사용하지 않습니다. 전체 VM을 다시 시작하고 mod_compress를 비활성화하여 변경 사항이 있는지 확인합니다. 아이디어 주셔서 감사합니다.
Pixelastic

흠, 여기에 뭔가있을 수 있습니다. 파일을 더 작은 파일로 변경하면 (같은 이름을 유지) 파일의 상단 절반 만 얻습니다. 이전 파일이 현재 파일의 내용 길이와 함께 표시되는 것 같습니다. 더 큰 파일로 바꾸면 전체 (이전) 파일이 표시됩니다. 파일 크기 변경이 고려되지만 파일 내용이 아닌 것 같습니다.
Pixelastic

스팸 댓글에 대해 죄송합니다. mod_compress를 비활성화해도 아무런 변화가 없으며 전체 VM을 다시 시작하지 않습니다.
Pixelastic

2

이 lighttpd 옵션은 저에게 효과적이었습니다.

server.network-backend = "writev" 

데비안 데스크탑의 데비안 VM에서 고마워요!
Yvan

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.