5月30日任务

11.22 访问日志不记录静态文件
11.23 访问日志切割

11.24 静态元素过期时间

访问日志不记录静态文件


F12可以查看元素,点到Network再F5刷新网页发现加载以下内容,都会被记录到访问日志中


像.png等等图片无需保存到日志中,防止日志文件过大,如下图:

把所有带gif,jpg等等定义为img,Log最后过滤不含img的日志 env=!img


-t, graceful让配置生效


发现jpg,png的访问没有被记录,除此之外的jpg1被写入日志

rz上传一张图片测试

图片可以访问成功:


在Linux中,并没有记录,因为做了标记限制png图片不被写入日志中


如果把env=!img去掉,则会被记录,如下图


访问日志切割


rotateslog是httpd自带的切割工具,加入虚拟主机配置文件中,检查语法并重新加载


 并重新命名log 加上%Y%m%d,默认以一天为例,86400单位为秒,即1天


用curl命令,让其记录到访问日志中,如下图,Logs目录下出现以年月日为命名的新日志,cat后正好时之前curl访问的记录 (注意此处不可以访问图片,因为已经被作为静态元素被过滤掉了)


总结:日志切割方便管理和分析,如分析两天前的日志数量可以直接调取当天的.log文件,同时注意需要加一个任务计划指定删除超过N天的老旧log,以保证磁盘空间一直处于有空间状态

静态元素过期时间


通常,用户在访问一个网站时会把静态元素缓存到本地,一遍下一次访问不用再远程下载, 节省带宽,增加访问速度,而缺点是没有定义缓存的清除时间,长久会造成缓存垃圾的堆积;这时候可以用expires.c模块实现自定义删除缓存的时间周期,如下图所示:

把原有的.jpg改名后重新访问该图片,F12发现返回的状态码是200,再次刷新变成304(not modified),表示此图片第一次访问时已被缓存到本地,第二次访问无需远程下载(修改)



expires模块打开&定义




测试:

先ctl +F5 (强制刷新,把本地缓存清空)

①浏览器中:回到200 (cache max规定最大为1天)


然后再刷新回到304


②curl 


如果把expires模块注释掉,如下图,cache control定义的时间消失


扩展 
apache日志记录代理IP以及真实客户端IP http://ask.apelearn.com/question/960 
apache只记录指定URI的日志 http://ask.apelearn.com/question/981
apache日志记录客户端请求的域名 http://ask.apelearn.com/question/1037
apache 日志切割问题 http://ask.apelearn.com/question/566

猜你喜欢

转载自blog.csdn.net/fuel91/article/details/80535321