nginx html页面缓存,页面缓存和nginx缓存

缓存存在的意义是为了减少后端的请求,减轻后端压力,一般页面的请求流程是这样的

请求流程

这里主要解决两个问题:

1.后端对浏览器缓存的指定

2.nginx启用缓存和清除缓存

浏览器缓存

在java后端的程序中也可以指定

1. 禁止缓存

public String page(HttpServletResponse response) {

response.setDateHeader("Expires", 0);

response.setHeader("Cache-Control", "no-cache, no-store");

response.setHeader("Pragma", "no-cache");

response.setDateHeader("Expires",-1);

return "page";

}

2.指定缓存问题

public void doGet(HttpServletRequest request, HttpServletResponse response) {

response.setContentType("text/html;charset=utf-8");

response.setDateHeader("Expires", System.currentTimeMillis() + 10000);

}

3.针对css和图片,默认是缓存的,只能通过链接加参数来避免缓存

nginx缓存

1.添加缓存模块

nginx默认是不缓存的,要想开启缓存,比如针对某个请求的缓存,或图片和css的缓存,得指定proxy_cache模块,这个模块是内置的,只需要做相应的配置就可以,如下,是针对一个/hello请求的配置

2.清除缓存

配置缓存时,默认会配置相应的过期时间,但一般我们有这种需要,就是不到过期时间时我们想清掉,针对这种常见的需求,nginx没有提供相应的官方模块,这时就需要第三方模块了,一般常用的第三方模块为proxy_cache_purge,git地址为

https://github.com/FRiCKLE/ngx_cache_purge

这个不提供windows版本,只有nginx版本,与nginx集成的时候要用/configure --add-module

编译安装,安装完成后在nginx.conf中做相应配置

这里的my_cache是上面配置的自己的缓存名称,要根据实际情况修改指定,

指定完成后重新启动nginx,如果要清除某个nginx缓存,可以在链接中添加purge例如

图片地址  http://localhost/a/a.img  清除图片地址  http://localhost/purge/a/a.img

手动访问下清除链接,就将缓存的内容清掉,下次访问时会请求服务器

你可能感兴趣的:(nginx,html页面缓存)