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定义的时间消失