Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
<?xml version="1.0" encoding="EUC-KR"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ko" xml:lang="ko"><head>
<meta content="text/html; charset=EUC-KR" http-equiv="Content-Type" />
<!--
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
This file is generated from xml source: DO NOT EDIT
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-->
<title>mod_file_cache - Apache HTTP Server Version 2.4</title>
<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link rel="stylesheet" type="text/css" href="../style/css/prettify.css" />
<script src="../style/scripts/prettify.min.js" type="text/javascript">
</script>
<link href="../images/favicon.ico" rel="shortcut icon" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/">모듈</a> | <a href="../mod/directives.html">지시어들</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">용어</a> | <a href="../sitemap.html">사이트맵</a></p>
<p class="apache">Apache HTTP Server Version 2.4</p>
<img alt="" src="../images/feather.png" /></div>
<div class="up"><a href="./"><img title="<-" alt="<-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">HTTP Server</a> > <a href="http://httpd.apache.org/docs/">Documentation</a> > <a href="../">Version 2.4</a> > <a href="./">모듈</a></div>
<div id="page-content">
<div id="preamble"><h1>아파치 모듈 mod_file_cache</h1>
<div class="toplang">
<p><span>가능한 언어: </span><a href="../en/mod/mod_file_cache.html" hreflang="en" rel="alternate" title="English"> en </a> |
<a href="../fr/mod/mod_file_cache.html" hreflang="fr" rel="alternate" title="Français"> fr </a> |
<a href="../ko/mod/mod_file_cache.html" title="Korean"> ko </a></p>
</div>
<div class="outofdate">이 문서는 최신판 번역이 아닙니다.
최근에 변경된 내용은 영어 문서를 참고하세요.</div>
<table class="module"><tr><th><a href="module-dict.html#Description">설명:</a></th><td>메모리에 정적 파일들을 캐쉬</td></tr>
<tr><th><a href="module-dict.html#Status">상태:</a></th><td>Experimental</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">모듈명:</a></th><td>file_cache_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">소스파일:</a></th><td>mod_file_cache.c</td></tr></table>
<h3>요약</h3>
<div class="warning">
이 모듈은 조심해서 사용해야 한다. <code class="module"><a href="../mod/mod_file_cache.html">mod_file_cache</a></code>를
사용하여 사이트를 엉망으로 만들기 쉽기때문에 이 문서를
꼼꼼히 읽길 바란다.
</div>
<p>거의 변하지 않고 자주 요청되는 파일을 <em>캐쉬</em>에
저장하여 서버 부하를 줄일 수 있다. <code class="module"><a href="../mod/mod_file_cache.html">mod_file_cache</a></code>는
자주 요청되는 <em>정적</em> 파일을 두가지 방식으로 캐쉬에
저장한다. 설정 지시어를 사용하여 <code class="module"><a href="../mod/mod_file_cache.html">mod_file_cache</a></code>가
파일을 열고(open) <code>mmap()</code>할지 아니면 파일을
열고 <em>파일 핸들</em>을 저장할지 결정한다. 두 방식 모두
파일을 서비스하기위해 필요한 작업의 일부를 (특히 파일 입출력
작업) 파일을 요청할 때마다 매번 하는 대신 서버가 시작할때
한번만 하여 서버 부하가 감소한다.</p>
<p>주의: 이 방법은 CGI 프로그램이나 특별한 내용핸들러를
통해 서비스하는 파일의 서비스 속도를 높일 수 없다. 이 방법은
보통 아파치 core 내용핸들러가 서비스하는 일반파일에만
적용된다.</p>
<p>이 모듈은 아파치 1.3에 있는 <code>mod_mmap_static</code>
모듈의 기능을 확장한 결과다.</p>
</div>
<div id="quickview"><a href="https://www.apache.org/foundation/contributing.html" class="badge"><img src="https://www.apache.org/images/SupportApache-small.png" alt="Support Apache!" /></a><h3>주제</h3>
<ul id="topics">
<li><img alt="" src="../images/down.gif" /> <a href="#using">mod_file_cache 사용하기</a></li>
</ul><h3 class="directives">지시어들</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#cachefile">CacheFile</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#mmapfile">MMapFile</a></li>
</ul>
<h3>Bugfix checklist</h3><ul class="seealso"><li><a href="https://www.apache.org/dist/httpd/CHANGES_2.4">httpd changelog</a></li><li><a href="https://bz.apache.org/bugzilla/buglist.cgi?bug_status=__open__&list_id=144532&product=Apache%20httpd-2&query_format=specific&order=changeddate%20DESC%2Cpriority%2Cbug_severity&component=mod_file_cache">Known issues</a></li><li><a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2&component=mod_file_cache">Report a bug</a></li></ul><h3>참고</h3>
<ul class="seealso">
<li><a href="#comments_section">Comments</a></li></ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="using" id="using">mod_file_cache 사용하기</a></h2>
<p><code class="module"><a href="../mod/mod_file_cache.html">mod_file_cache</a></code>는 주서버 설정에서 <code class="directive"><a href="#mmapfile">MMapFile</a></code>과 <code class="directive"><a href="#cachefile">CacheFile</a></code> 지시어를 사용하여
설정한 정적 파일들을 캐쉬에 저장한다.</p>
<p>모든 플래폼이 두 지시어를 모두 지원하는 것은 아니다.
예를 들어, 윈도우즈용 아파치는 현재 <code class="directive"><a href="#mmapstatic">MMapStatic</a></code> 지시어를
지원하지 않지만, AIX 같은 다른 플래폼은 둘 모두를 지원한다.
지원하지않는 지시어를 사용할 경우 서버 오류 로그에 오류문을
남긴다. 지원하지않는 지시어를 사용해도 서버는 동작하지만
파일을 캐쉬에 저장하지 않는다. 두 지시어를 모두 지원하는
플래폼을 사용한다면 어떤 방식이 더 좋은지 실험해보라.</p>
<h3>MMapFile 지시어</h3>
<p><code class="module"><a href="../mod/mod_file_cache.html">mod_file_cache</a></code>의 <code class="directive"><a href="#mmapfile">MMapFile</a></code> 지시어는
설정한 정적 파일들을 <code>mmap()</code> 시스템호출을
사용하여 메모리에 대응한다. 최신 유닉스류 운영체제라면
보통 이 시스템호출이 있지만, 없는 운영체제도 있다. 또,
<code>mmap()</code>할 수 있는 파일 크기와 개수를 시스템이
제한할 수 있으므로 미리 실험해보는 것이 좋다.</p>
<p>서버는 시작할때와 재시작할때만 <code>mmap()</code>한다.
그래서 파일시스템에서 해당 파일중 하나라도 변경되면 서버를
재시작<em>해야</em> 한다 (<a href="../stopping.html">중단과
재시작</a> 문서 참고). 다시 말해서 파일이 변경되었는데
서버를 재시작하지 않으면 완전히 이상하게 요청을 서비스할지도
모른다. 이전 파일을 지우고(unlink) 그 자리에 새로운 파일을
만들는 방식으로 파일을 수정해야 한다. <code>rdist</code>나
<code>mv</code>와 같은 대다수의 도구가 이런 방식으로 동작한다.
매번 추가로 불필요한 <code>stat()</code> 검사가 필요하고
입출력 감소라는 원래 의도에 반하기때문에 이 모듈은 파일의
변화를 무시한다.</p>
<h3>CacheFile 지시어</h3>
<p><code class="module"><a href="../mod/mod_file_cache.html">mod_file_cache</a></code>의 <code class="directive"><a href="#cachefile">CacheFile</a></code> 지시어는
설정 지시어에 열거한 파일(과 파일들)을 열어서 파일의
<em>핸들(handle)</em> 혹은 <em>파일 기술자(file descriptor)</em>를
캐쉬에 저장한다. 파일을 요청하면 서버는 캐쉬에서 핸들을
찾아서 소켓 API <code>sendfile()</code>에 (윈도우즈에서는
<code>TransmitFile()</code>) 넘긴다.</p>
<p>서버는 시작할때와 재시작할때만 파일 핸들을 캐쉬한다.
그래서 파일시스템에서 캐쉬한 파일중 하나라도 변경되면
서버를 재시작<em>해야</em> 한다 (<a href="../stopping.html">중단과 재시작</a> 문서 참고).
다시 말해서 파일이 변경되었는데 서버를 재시작하지 않으면
완전히 이상하게 요청을 서비스할지도 모른다. 이전 파일을
지우고(unlink) 그 자리에 새로운 파일을 만드는 방식으로
파일을 수정해야 한다. <code>rdist</code>나 <code>mv</code>와
같은 대다수의 도구가 이런 방식으로 동작한다.</p>
<div class="note"><h3>주의</h3>
<p>디렉토리의 모든 파일을 재귀적으로 캐쉬에 저장하는 지시어는
없다. 대신 다음과 같이 해보라... <code class="directive"><a href="../mod/core.html#include">Include</a></code> 지시어를 참고하여 다음과
같은 명령어를 실행한다:</p>
<div class="example"><p><code>
find /www/htdocs -type f -print \<br />
| sed -e 's/.*/mmapfile &/' > /www/conf/mmap.conf
</code></p></div>
</div>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="CacheFile" id="CacheFile">CacheFile</a> <a name="cachefile" id="cachefile">지시어</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">설명:</a></th><td>시작시 여러 파일 핸들을 캐쉬한다</td></tr>
<tr><th><a href="directive-dict.html#Syntax">문법:</a></th><td><code>CacheFile <var>file-path</var> [<var>file-path</var>] ...</code></td></tr>
<tr><th><a href="directive-dict.html#Context">사용장소:</a></th><td>주서버설정</td></tr>
<tr><th><a href="directive-dict.html#Status">상태:</a></th><td>Experimental</td></tr>
<tr><th><a href="directive-dict.html#Module">모듈:</a></th><td>mod_file_cache</td></tr>
</table>
<p><code class="directive">CacheFile</code> 지시어는 서버가 시작할때
여러 파일을 열고(open) 파일들의 핸들을 캐쉬에 저장한다.
서버 종료시 자동으로 캐쉬한 파일의 핸들을 닫는다(close).
파일시스템에서 파일이 변경되면 파일을 다시 캐쉬하기위해
서버를 재시작해야 한다.</p>
<p><var>file-path</var> 아규먼트를 조심해라. 아규먼트는
아파치의 URL-파일명 변환 핸들러가 만든 파일시스템 경로와
정확히 일치해야 한다. 한번 더 불필요한 <code>stat()</code>
시스템호출이 필요하기때문에 inode나 심볼링크 <em>등</em>을
경로를 지정할 수 없다. 이 모듈은 <code class="module"><a href="../mod/mod_alias.html">mod_alias</a></code>나
<code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>로 재작성한 파일명을 다룰 수
있기도 없기도 하다.</p>
<div class="example"><h3>예제</h3><p><code>
CacheFile /usr/local/apache/htdocs/index.html
</code></p></div>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="MMapFile" id="MMapFile">MMapFile</a> <a name="mmapfile" id="mmapfile">지시어</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">설명:</a></th><td>시작시 여러 파일을 메모리에 대응한다</td></tr>
<tr><th><a href="directive-dict.html#Syntax">문법:</a></th><td><code>MMapFile <var>file-path</var> [<var>file-path</var>] ...</code></td></tr>
<tr><th><a href="directive-dict.html#Context">사용장소:</a></th><td>주서버설정</td></tr>
<tr><th><a href="directive-dict.html#Status">상태:</a></th><td>Experimental</td></tr>
<tr><th><a href="directive-dict.html#Module">모듈:</a></th><td>mod_file_cache</td></tr>
</table>
<p><code class="directive">MMapFile</code> 지시어는 서버가 시작할때
(공백으로 구분한 아규먼트로 지정한) 여러 파일을 메모리에
대응한다(map). 서버 종료시 자동으로 대응을 푼다(unmap).
파일시스템에서 파일이 변경되면 파일들을 다시
<code>mmap()</code>하기위해 최소한 서버에 <code>HUP</code>이나
<code>USR1</code> 시그널을 보내야 한다.</p>
<p><var>file-path</var> 아규먼트를 조심해라. 아규먼트는
아파치의 URL-파일명 변환 핸들러가 만든 파일시스템 경로와
정확히 일치해야 한다. 한번 더 불필요한 <code>stat()</code>
시스템호출이 필요하기때문에 inode나 심볼링크 <em>등</em>을
경로를 지정할 수 없다. 이 모듈은 <code class="module"><a href="../mod/mod_alias.html">mod_alias</a></code>나
<code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>로 재작성한 파일명을 다룰 수
있기도 없기도 하다.</p>
<div class="example"><h3>예제</h3><p><code>
MMapFile /usr/local/apache/htdocs/index.html
</code></p></div>
</div>
</div>
<div class="bottomlang">
<p><span>가능한 언어: </span><a href="../en/mod/mod_file_cache.html" hreflang="en" rel="alternate" title="English"> en </a> |
<a href="../fr/mod/mod_file_cache.html" hreflang="fr" rel="alternate" title="Français"> fr </a> |
<a href="../ko/mod/mod_file_cache.html" title="Korean"> ko </a></p>
</div><div class="top"><a href="#page-header"><img src="../images/up.gif" alt="top" /></a></div><div class="section"><h2><a id="comments_section" name="comments_section">Comments</a></h2><div class="warning"><strong>Notice:</strong><br />This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our <a href="http://httpd.apache.org/lists.html">mailing lists</a>.</div>
<script type="text/javascript"><!--//--><![CDATA[//><!--
var comments_shortname = 'httpd';
var comments_identifier = 'http://httpd.apache.org/docs/2.4/mod/mod_file_cache.html';
(function(w, d) {
if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
d.write('<div id="comments_thread"><\/div>');
var s = d.createElement('script');
s.type = 'text/javascript';
s.async = true;
s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
(d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
}
else {
d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
}
})(window, document);
//--><!]]></script></div><div id="footer">
<p class="apache">Copyright 2017 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/">모듈</a> | <a href="../mod/directives.html">지시어들</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">용어</a> | <a href="../sitemap.html">사이트맵</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
if (typeof(prettyPrint) !== 'undefined') {
prettyPrint();
}
//--><!]]></script>
</body></html>