图书推荐
正文内容
1. 浏览器缓存简介
浏览器缓存遵循HTTP协议定义的缓存机制(如:Expires;Cache-control等)。
当浏览器无缓存时,请求响应流程
当浏览器有缓存时,请求响应流程
浏览器缓存校验过期机制浏览器请求流程
2. Nginx控制浏览器缓存配置
ngx_http_headers_module语法
本配置项可以控制HTTP响应中的“Expires”和“Cache-Control”头信息,(起到控制页面缓存的作用)。
“Expires”头信息中的过期时间为当前系统时间与您设定的 time 值时间的和。如果指定了 modified 参数,则过期时间为文件的最后修改时间与您设定的 time 值时间的和。
“Cache-Control”头信息的内容取决于指定 time 的符号。可以在time值中使用正数或负数。
当 time 为负数,“Cache-Control: no-cache”;
当 time 为正数或0,“Cache-Control: max-age=time”,单位是秒。
参数用于指定“Expires”的值为 1 January, 1970, 00:00:01 GMT。
参数用于指定“Expires”的值为 “Thu, 31 Dec 2037 23:55:55 GMT”,“Cache-Control” 的值为10 年。
参数令对“Expires” 和 “Cache-Control”响应头信息的添加或修改失效。
3. 应用实例
1. vim /etc/nginx/conf.d/static.conf
2. nginx -s reload 重新载入nginx配置文件3. 创建 /vagrant/doc/hello.txt 文件4. 通过curl访问 192.168.33.88/hello.txt,查看http响应头信息
重点查看 和 两个字段,可见,hello.txt 的缓存时间为1天。
二、防盗链
目的:防止资源被盗用
思路:区别哪些请求是非正常的用户请求
1. 基于http_refer防盗链配置模块ngx_http_referer_module语法
:请求头中没有 Referer 字段
:请求头中虽然存在“Referer”字段,但是它的值已经被防火墙或代理服务器删除;这些值是不以“http://”或“https://”开头的字符串;
:“Referer”请求头字段包含该服务器名称
任意字符串:定义一个服务器名称和一个可选的URI前缀。服务器名开始或结尾可以有 “*” 。检查时,“Referer”字段中的服务器端口会被忽略。
正则表达式:字符串必须以开头,值得注意的是,正则表达式匹配的是在“http://”或“https://”之后的内容。
示例
2. 应用实例
1. vim conf.d/static.conf
2. nginx -s reload 重新载入nginx配置文件3. 创建文件4. 使用 curl进行访问测试
不带referer,可以正常访问
referer为 ,返回403
referer以 开头或 结尾,可以正常访问
referer为 ,可以正常访问
referer为 ,返回403
referer为 ,可以正常访问
以上是文章全部内容,欢迎关注“PHP自学中心”,导航栏里已经给大家整理了基础知识题,笔试题,视频教程等,有需要的可以查看查看
领取专属 10元无门槛券
私享最新 技术干货