nginx缓存静态文件|nginx 缓存怎么都在tmp

nginx缓存静态文件|nginx 缓存怎么都在tmp的第1张示图

㈠ nginx 反代里缓存怎么清理

最简单的反代+全缓存脚本:

#新建2个目录,放置缓存文件:

mkdir -p /home/cache/path

mkdir /home/cache/temp

修改/usr/local/nginx/conf/nginx.conf的http层,添加以下代码:

client_body_buffer_size 512k;

proxy_connect_timeout 5;

proxy_read_timeout 60;

proxy_send_timeout 5;

proxy_buffer_size 16k;

proxy_buffers 4 64k;

proxy_busy_buffers_size 128k;

proxy_temp_file_write_size 128k;

proxy_temp_path /home/cache/temp;

proxy_cache_path /home/cache/path levels=1:2 keys_zone=cache_one:10m inactive=7d max_size=30g;

#500m是内存占用,7d是7天无访问删除,30g是缓存占具硬盘空间

#limit_zone crawler $binary_remote_addr 10m; #这段是用于限制单ip连接数的,如果频繁出现后端负载过大可以尝试去掉#。

(1)nginx缓存静态文件扩展阅读:

nginx仅仅处理静态页面,动态的页面(php请求)统统都交付给后台的两台apache来处理。也就是说,可以把网站的静态页面或者文件放置到nginx的目录下;动态的页面和数据库访问都保留到后台的apache服务器上。

假设前端nginx(为127.0.0.1:8080)仅仅包含一个静态页面index.html;后 台的两个apache服务器(分别为localhost:80和158.37.70.143:80),一台根目录放置phpMyAdmin文件夹和 test.php(里面测试代码为print "server1";),另一台根目录仅仅放置一个test.php(里面测试代码为print "server2";)。

㈡ 缓存静态资源,不知怎么解决

之前看过apach及nginx对于静态资源(含js,图片,css等)部分的缓存,用于加速并减轻后台实际web服务器的压力。 静态资源缓存是WEB服务器优化的一种手段,基本原理如下: 1.客户端浏览器请求服务器一个服务(该服务含有图片,js等静态资源),通常会对于每一个网页中的独立图片或js文件发送一个http请求 2.WEB服务器对于每个资源HTTP请求进行解析,并生成一个资源修改时间的唯一值(可以是etag或last_modified参数),放入服务器端map,key为资源url,value为资源修改时间。最后将此资源修改时间的唯一值包含在http头上返回,因为是首次请求,所以会将所有内容放在http body中一并返回给客户浏览器端 3.客户浏览器接收服服务器响应,并将服务器返回的资源修改时间作为key放入浏览器客户端,value为http body中的实际资源内容 4.客户浏览器再次请求静态资源时,会将资源修改时间一并发送给服务器 5.服务端会从最新的map中取出该资源url对应的修改时间,如果值晚于客户端请求的资源修改时间,这时会返回最新的已经修改过的资源给客户端。否则返回304 not modifed 这里记录资源修改时间的方式有etag及last_modified。最先有的是last_modified,它的工作方式就是上述介绍的,但缺点是只能精确到秒级别。也就是说当你在一秒中修改资源两次,而客户端拿到的是第一次修改,那之后就算客户端第二次再次请求也不会拿到最新的资源。 而etag的出现正是为了解决last_modified的秒级问题,于http 1.1被提出。今天测试了下,在没有nginx等前端反向代理服务器时,tomcat竟然默认对静态资源做了缓存。 tomcat默认运用etag及last_modifed。etag与if_no_match(客户端浏览器上传时在http head中应该放的属性名)一起使用,last_modified与If-Modified-Since一起使用。客户端首次请求时,得到请求响应数据如下: GET http://localhost:8080/webTest/jsp/index.jsp [HTTP/1.1 200 OK 1ms] GET http://localhost:8080/webTest/js/hello.js [HTTP/1.1 200 OK 1ms] GET http://localhost:8080/webTest/img/a.jpg [HTTP/1.1 200 OK 2ms]我们看一下Hello.js这个请求响应具体信息:server Apache-Coyote/1.1 (表明服务器是tomcat)Last-Modified: Sun, 11 May 2014 10:54:33 GMTEtag: W/"175-1399805673000"Date: Sun, 11 May 2014 10:59:23 GMTContent-Type: application/javascript;charset=UTF-8Content-Length: 175Accept-Ranges: bytes从上面可以看到tomcat即返回了last_modified也返回了etag。客户端再次请求时,请求数据如下:If-None-Match: W/"175-1399805673000"If-Modified-Since: Sun, 11 May 2014 10:54:33 GMT响应如下: GET http://localhost:8080/webTest/jsp/index.jsp [HTTP/1.1 200 OK 1ms] GET http://localhost:8080/webTest/js/hello.js [HTTP/1.1 304 Not Modified 1ms] GET http://localhost:8080/webTest/img/a.jpg [HTTP/1.1 304 Not Modified 1ms] 从中我们可以看到tomcat对于静态数据作了缓存。接着我们分析tomcat对于这部分静态缓存的判断处理,这部分逻辑是写在DefaultServlet类中,我们可以在doGet方法中进入ServiceContext方法中找到以下源码: // Check if the conditions specified in the optional If headers are // satisfied. if (cacheEntry.context == null) { // Checking If headers boolean included = (request.getAttribute(Globals.INCLUDE_CONTEXT_PATH_ATTR) != null); if (!included && !checkIfHeaders(request, response, cacheEntry.attributes)) { //这句判断是否需要返回整个资源请求 return; } }上面源码的 if (!included && !checkIfHeaders(request, response, cacheEntry.attributes))用于判断是否需要返回整个资源,如果indcluded与checkIfHeaders方法返回的都是false,这时就直接返回,说明资源未修改,或者是缓存不支持的请求方式。我们接着查看checkIfHeaders方法: /** * Check if the conditions specified in the optional If headers are * satisfied. * * @param request The servlet request we are processing * @param response The servlet response we are creating * @param resourceAttributes The resource information * @return boolean true if the resource meets all the specified conditions, * and false if any of the conditions is not satisfied, in which case * request processing is stopped */ protected boolean checkIfHeaders(HttpServletRequest request, HttpServletResponse response, ResourceAttributes resourceAttributes) throws IOException { return checkIfMatch(request, response, resourceAttributes) && checkIfModifiedSince(request, response, resourceAttributes) && checkIfNoneMatch(request, response, resourceAttributes) && checkIfUnmodifiedSince(request, response, resourceAttributes); }可以看到tomcat只有当这四个属性全部返回true(也就是说全部认为资源已经改变)才会返回true,这样最终会将整个资源(最新修改过的)返回客户端。在这里,我们从上面实际过程当中看到,浏览器第二次请求资源时在http请求header中放了If-None-Match: W/"175-1399805673000"If-Modified-Since: Sun, 11 May 2014 10:54:33 GMT这两个属性。因此我们查看 && checkIfModifiedSince(request, response, resourceAttributes) && checkIfNoneMatch(request, response, resourceAttributes)这两个方法checkIfModifiedSince源码如下: /** * Check if the if-modified-since condition is satisfied. * * @param request The servlet request we are processing * @param response The servlet response we are creating * @param resourceInfo File object * @return boolean true if the resource meets the specified condition, * and false if the condition is not satisfied, in which case request * processing is stopped */ protected boolean checkIfModifiedSince(HttpServletRequest request, HttpServletResponse response, ResourceAttributes resourceAttributes) { try { long headerValue = request.getDateHeader("If-Modified-Since"); long lastModified = resourceAttributes.getLastModified(); if (headerValue != -1) { // If an If-None-Match header has been specified, if modified since // is ignored. if ((request.getHeader("If-None-Match") == null) && (lastModified < headerValue + 1000)) { // The entity has not been modified since the date // specified by the client. This is not an error case. response.setStatus(HttpServletResponse.SC_NOT_MODIFIED); response.setHeader("ETag", resourceAttributes.getETag()); return false; } } } catch (IllegalArgumentException illegalArgument) { return true; } return true; }源码中可以看到: if ((request.getHeader("If-None-Match") == null) && (lastModified < headerValue + 1000)) {这句话表明只有在客户端浏览器发送的请求头中不包含If-None-Match,IfModifiedSince才会生效。我们接着看checkIfNoneMatch,源码如下:/** * Check if the if-none-match condition is satisfied. * * @param request The servlet request we are processing * @param response The servlet response we are creating * @param resourceInfo File object * @return boolean true if the resource meets the specified condition, * and false if the condition is not satisfied, in which case request * processing is stopped */ protected boolean checkIfNoneMatch(HttpServletRequest request, HttpServletResponse response, ResourceAttributes resourceAttributes) throws IOException { String eTag = resourceAttributes.getETag(); String headerValue = request.getHeader("If-None-Match"); if (headerValue != null) { boolean conditionSatisfied = false; if (!headerValue.equals("*")) { StringTokenizer commaTokenizer = new StringTokenizer(headerValue, ","); while (!conditionSatisfied && commaTokenizer.hasMoreTokens()) { String currentToken = commaTokenizer.nextToken(); if (currentToken.trim().equals(eTag)) conditionSatisfied = true; } } else { conditionSatisfied = true; } if (conditionSatisfied) { // For GET and HEAD, we should respond with // 304 Not Modified. // For every other method, 412 Precondition Failed is sent // back. if ( ("GET".equals(request.getMethod())) || ("HEAD".equals(request.getMethod())) ) { response.setStatus(HttpServletResponse.SC_NOT_MODIFIED); response.setHeader("ETag", eTag); return false; } response.sendError(HttpServletResponse.SC_PRECONDITION_FAILED); return false; } } return true; }这里: String eTag = resourceAttributes.getETag(); String headerValue = request.getHeader("If-None-Match");这两句比较简单,就是分别从服务器缓存和http请求头中中取出etag。接着判断这两个etag如果相等,则conditionSatisfied为true,会执行到以下语句: if (conditionSatisfied) { // For GET and HEAD, we should respond with // 304 Not Modified. // For every other method, 412 Precondition Failed is sent // back. if ( ("GET".equals(request.getMethod())) || ("HEAD".equals(request.getMethod())) ) { response.setStatus(HttpServletResponse.SC_NOT_MODIFIED); response.setHeader("ETag", eTag); return false; } response.sendError(HttpServletResponse.SC_PRECONDITION_FAILED); return false; }这段语句中可以发现,如果资源未改变的情况下,并且请求方式为GET或者HEAD时,会返回304状态码。否则返回一个412状态码,同样不会返回资源内容。如果上述最终if ((request.getHeader("If-None-Match") == null) && (lastModified < headerValue + 1000))条件不成立,即资源更新了或者是第一次请求,这里会读取当前请求资源文件,并最终放入http响应中。

㈢ 如何利用Nginx的缓冲,缓存优化提升性能

在开发调试web的时候,经常会碰到因浏览器缓存(cache)而经常要去清空缓存或者强制刷新来测试的烦恼,提供下apache不缓存配置和nginx不缓存配置的设置。apache:首先确定配置文件httpd.conf中确已经加载mod_headers模块。LoadMole headers_mole moles/mod_headers.so我们可以根据文件类型来让浏览器每次都从服务器读取,这里测试用css、js、swf、php、html、htm这几种文件。<FilesMatch “\.(css|js|swf|php|htm|html)$”>Header set Cache-Control "private, no-cache, no-store, proxy-revalidate, no-transform"Header set Pragma "no-cache"</FilesMatch>nginx:location ~ .*\.(css|js|swf|php|htm|html )$ {add_header Cache-Control no-store;}对于站点中不经常修改的静态内容(如图片,JS,CSS),可以在服务器中设置expires过期时间,控制浏览器缓存,达到有效减小带宽流量,降低服务器压力的目的。以Nginx服务器为例: location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {#过期时间为30天,#图片文件不怎么更新,过期可以设大一点,#如果频繁更新,则可以设置得小一点。expires 30d;}location ~ .*\.(js|css)$ {expires 10d;}

㈣ nginx 缓存怎么都在tmp

nginx缓存cache的5种方案1、传统缓存之一(404)这个办法是把nginx的404错误定向到后端,然后用proxy_store把后端返回的页面保存。配置:location / {root /home/html/;#主目录expires 1d;#网页的过期时间error_page 404 =200 /fetch$request_uri;#404定向到/fetch目录下}location /fetch/ {#404定向到这里internal;#指明这个目录不能在外部直接访问到expires 1d;#网页的过期时间 alias /html/; proxy_store会将文件保存到这目录下proxy_passhttp://www.jb51.net/;#后端upstream地址,/fetch同时是一个代理proxy_set_header Accept-Encoding '';#让后端不要返回压缩(gzip或deflate)的内容,保存压缩后的内容会引发乱子。proxy_store on;#指定nginx将代理返回的文件保存proxy_temp_path /home/tmp;#临时目录,这个目录要和/home/html在同一个硬盘分区内}使用的时候还有要注意是nginx要有权限往/home/tmp和/home/html下有写入文件的权限,在linux下nginx一般会配置成nobody用户运行,这样这两个目录就要chown nobody,设成nobody用户专用,当然也可以chmod 777,不过所有有经验的系统管理员都会建议不要随便使用777。2、传统缓存之二(!-e)原理和404跳转基本一致,但更简洁一些:location / {root /home/html/;proxy_store on;proxy_set_header Accept-Encoding '';proxy_temp_path /home/tmp;if ( !-f $request_filename ){proxy_passhttp://www.jb51.net/;}}可以看到这个配置比404节约了不少代码,它是用!-f来判断请求的文件在文件系统上存不存在,不存在就proxy_pass到后端,返回同样是用proxy_store保存。两种传统缓存都有着基本一样的优点和缺点:缺点1:不支持带参数的动态链接,比如read.php?id=1,因为nginx只保存文件名,所以这个链接只在文件系统下保存为read.php,这样用户访问read.php?id=2时会返回不正确的结果。同时不支持http://www.jb51.net/这种形式的首页和二级目录http://www.jb51.net/download/,因为nginx非常老实,会将这样的请求照链接写入文件系统,而这个链接显然是一个目录,所以保存失败。这些情况都需要写rewrite才能正确保存。缺点2:nginx内部没有缓存过期和清理的任何机制,这些缓存的文件会永久性地保存在机器上,如果要缓存的东西非常多,那就会撑暴整个硬盘空间。为此可以使用一个shell脚本定期清理,同时可以撰写php等动态程序来做实时更新。缺点3:只能缓存200状态码,因此后端返回301/302/404等状态码都不会缓存,假如恰好有一个访问量很大的伪静态链接被删除,那就会不停穿透导致后端承载不小压力。缺点4:nginx不会自动选择内存或硬盘作为存储介质,一切由配置决定,当然在当前的操作系统里都会有操作系统级的文件缓存机制,所以存在硬盘上也不需要过分担心大并发读取造成的io性能问题。nginx传统缓存的缺点也是它和squid等缓存软件的不同之特色,所以也可看作其优点。在生产应用中它常常用作和squid的搭档,squid对于带?的链接往往无法阻挡,而nginx能将其访问拦住,例如:http://jb51.net/?和http://jb51.net/在squid上会被当做两个链接,所以会造成两次穿透;而nginx只会保存一次,无论链接变成http://jb51.net/?1还是http://jb51.net/?123,均不能透过nginx缓存,从而有效地保护了后端主机。nginx会非常老实地将链接形式保存到文件系统中,这样对于一个链接,可以很方便地查阅它在缓存机器上的缓存状态和内容,也可以很方便地和别的文件管理器如rsync等配合使用,它完完全全就是一个文件系统结构。这两种传统缓存都可以在linux下将文件保存到/dev/shm里,一般我也是这么做的,这样可以利用系统内存来做缓存,利用内存的话,清理过期内容速度就会快得多。使用/dev/shm/时除了要把tmp目录也指向到/dev/shm这个分区外,如果有大量小文件和目录,还要修改一下这个内存分区的inode数量和最大容量:mount -o size=2500M -o nr_inodes=480000 -o noatime,nodiratime -o remount /dev/shm上面的命令在一台有3G内存的机器上使用,因为/dev/shm默认最大内存是系统内存的一半就是1500M,这条命令将其调大成2500M,同时shm系统inode数量默认情况下可能是不够用的,但有趣的是它可以随意调节,这里调节为480000保守了点,但也基本够用了。3、基于memcached的缓存nginx对memcached有所支持,但是功能并不是特别之强,性能上还是非常之优秀。location /mem/ {if ( $uri ~ "^/mem/([0-9A-Za-z_]*)$" ){set $memcached_key "$1";memcached_pass 192.168.1.2:11211;}expires 70;}这个配置会将http://jb51.net/mem/abc指明到memcached的abc这个key去取数据。nginx目前没有写入memcached的任何机制,所以要往memcached里写入数据得用后台的动态语言完成,可以利用404定向到后端去写入数据。4、基于第三方插件ncachencache是新浪兄弟开发的一个不错的项目,它利用nginx和memcached实现了一部分类似squid缓存的功能,我并没有使用这个插件的经验,可以参考:http://code.google.com/p/ncache/5、nginx新开发的proxy_cache功能从nginx-0.7.44版开始,nginx支持了类似squid较为正规的cache功能,目前还处于开发阶段,支持相当有限,这个缓存是把链接用md5编码hash后保存,所以它可以支持任意链接,同时也支持404/301/302这样的非200状态。配置:首先配置一个cache空间:复制代码 代码如下:proxy_cache_path /path/to/cache levels=1:2 keys_zone=NAME:10m inactive=5m max_size=2m clean_time=1m;注意这个配置是在server标签外,levels指定该缓存空间有两层hash目录,第一层目录是1个字母,第二层为2个字母,保存的文件名就会类似/path/to/cache/c/29/;keys_zone为这个空间起个名字,10m指空间大小为10MB;inactive的5m指缓存默认时长5分钟;max_size的2m是指单个文件超过2m的就不缓存;clean_time指定一分钟清理一次缓存。location / {proxy_passhttp://www.jb51.net/;proxy_cache NAME;#使用NAME这个keys_zoneproxy_cache_valid 200 302 1h;#200和302状态码保存1小时proxy_cache_valid 301 1d;#301状态码保存一天proxy_cache_valid any 1m;#其它的保存一分钟}ps:支持cache的0.7.44到0.7.51这几个版本的稳定性均有问题,访问有些链接会出现错误,所以这几个版本最好不要在生产环境中使用。nginx-0.7下目前所知较为稳定的版本是0.7.39。稳定版0.6.36版也是近期更新,如果在配置里没有使用到0.7的一些新标签新功能,也可以使用0.6.36版。Nginx缓存的内存占用问题的一般解决方法1、前些日子某服务被刷,每分钟达到上几百万请求;当时采用了nginx cache来解决的;但是因为某服务不能缓存太久,当时设置了5s,那么带来的问题就是产生大量小文件,而且很快就删除了。 2、通过free -m会发现used是27G;但是通过top查看进程占的内存并没有那么多那内存去哪了? 3、通过查阅资料会发现(cat /proc/meminfo)Slab: 22464312 kBSReclaimable: 16474128 kB (这些是内核保持的但是可以释放的inode和dentry的缓存)SUnreclaim: 5990184 kB 4、这些内存为什么会不自动清理呢?某机房机器系统版本:Linux 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux(正常,没出现内存快到100%的情况)某机房机器系统版本:Linux 2.6.32-279.el6.x86_64 #1 SMP Fri Jun 22 12:19:21 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux (不释放) 5、通过设置如下参数来设置内存阀值sysctl -w vm.extra_free_kbytes=6436787sysctl -w vm.vfs_cache_pressure=10000

㈤ nginx缓存性能怎么样

Nginx缓存对于不少人来说都不是很明朗的一个知识。那么好我们就借介绍有关优点和缺点的机会把大家带进Nginx缓存的世界。希望大家在文中能找到自己相关的使用方法。两种Nginx缓存都有着基本一样的优点和缺点:缺点1:不支持带参数的动态链接,比如read.php?id=1,因为Nginx缓存只保存文件名,所以这个链接只在文件系统下保存为read.php,这样用户访问read.php?id=2时会返回不正确的结果。同时不支持http://www.sudone.com/这种形式的首页和二级目录http://www.sudone.com/download/,因为Nginx缓存非常老实,会将这样的请求照链接写入文件系统,而这个链接显然是一个目录,所以保存失败。这些情况都需要写rewrite才能正确保存。缺点2:Nginx缓存内部没有缓存过期和清理的任何机制,这些缓存的文件会永久性地保存在机器上,如果要缓存的东西非常多,那就会撑暴整个硬盘空间。为此可以使用一个shell脚本定期清理,同时可以撰写php等动态程序来做实时更新。缺点3:只能缓存200状态码,因此后端返回301/302/404等状态码都不会缓存,假如恰好有一个访问量很大的伪静态链接被删除,那就会不停穿透导致后端承载不小压力。缺点4:Nginx不会自动选择内存或硬盘作为存储介质,一切由配置决定,当然在当前的操作系统里都会有操作系统级的文件缓存机制,所以存在硬盘上也不需要过分担心大并发读取造成的io性能问题。Nginx传统缓存的缺点也是它和squid等缓存软件的不同之特色,所以也可看作其优点。在生产应用中它常常用作和squid的搭档,squid对于带?的链接往往无法阻挡,而Nginx能将其访问拦住,例如:http://sudone.com/?和http://sudone.com/在squid上会被当做两个链接,所以会造成两次穿透;而Nginx只会保存一次,无论链接变成http://sudone.com/?1还是http://sudone.com/?123,均不能透过Nginx缓存,从而有效地保护了后端主机。Nginx缓存会非常老实地将链接形式保存到文件系统中,这样对于一个链接,可以很方便地查阅它在缓存机器上的缓存状态和内容,也可以很方便地和别的文件管理器如rsync等配合使用,它完完全全就是一个文件系统结构。这两种传统缓存都可以在linux下将文件保存到/dev/shm里,一般我也是这么做的,这样可以利用系统内存来做缓存,利用内存的话,清理过期内容速度就会快得多。使用/dev/shm/时除了要把tmp目录也指向到/dev/shm这个分区外,如果有大量小文件和目录,还要修改一下这个内存分区的inode数量和最大容量:mount -o size=2500M -o nr_inodes=480000 -o noatime,nodiratime -o remount /dev/shm上面的命令在一台有3G内存的机器上使用,因为/dev/shm默认最大内存是系统内存的一半就是1500M,这条命令将其调大成2500M,同时shm系统inode数量默认情况下可能是不够用的,但有趣的是它可以随意调节,这里调节为480000保守了点,但也基本够用了。

㈥ Nginx缓存什么时候失效

location ~.*\.(js|css|html|png|jpg)$ 这个是设置类型{expires 3d;}expires 3d;//表示缓存3天expires 3h;//表示缓存3小时expires max;//表示缓存10年expires -1;//表示永远过期。如果设置为-1在js、css等静态文件在没有修改的情况下返回的是http 304,如果修改返回http 200http 304:自从上次请求后,请求的网页未修改过。服务器返回此响应时,不会返回网页内容。http 200:服务器已成功处理了请求,这表示服务器提供了请求的内容。=======如果不想让代理或浏览器缓存,加no-cache参数add_header Cache-Control no-cache;这样浏览器F5刷新时,返回的就是http 200,而不是http 304

㈦ 如何在Nginx中缓存静态文件,为访问站点提速

采用缓存技术可以抄提高网站公开的响应速度,但在一定程度上也降低了服务器的负载。 相比静态网页与动态网页,它不要求服务器端计算,所以在页面打开的响应速度为比动态页面更快! 虽然我不太懂,但是如果你掩盖了服务器上的静态页面。

㈧ 如何在nginx中缓存静态文件

首先确定配置文件httpd.conf中确已经加载mod_headers模块。LoadMoleheaders_molemoles/mod_headers.so我们可以根据文件类型来让浏览器每次都从内服务器读取,这里测试用容css、js、swf、php、html、htm这几种文件。HeadersetCache-Control"private,no-cache,no-store,proxy-revalidate,no-transform"HeadersetPragma"no-cache"

㈨ 怎么把nginx的静态页面缓存到memcached

nginx的memcached_mole模块可以直接从memcached服务器中读取内容后输出,后续的请求不再经过应用程序处理,如php-fpm、django,大大的提升动态页面的速度。nginx只负责从memcached服务器中读取数据,要往memcached写入数据还得需要后台的应用程序来完成,主动的将要缓存的页面缓存到memcached中,可以通过404重定向到后端去处理的。 ngx_http_memcached_mole可以操作任何兼用memcached协议的软件。如ttserver、membase等

㈩ nginx缓存目录temp可以删除吗

可以删除,它只是存放一些静态缓存数据,用户访问的时候,如果有就直接从缓存里取,没有的话直接访问代码。你删除之后,从新reload一次nginx就可以了。

未经允许不得转载:山九号 » nginx缓存静态文件|nginx 缓存怎么都在tmp

赞 (0)