服务器web服务使用的是nginx。
经测试,上传文件后大约40秒后生效。
更新文件不立即生效。
网上资料说根nginx中sendfile选项有关。
在nginx配置文件中,http区域里将sedfile设置为off,重启nginx服务。
谷歌浏览器强制刷新一次,即可实现上传更新文件立即生效的效果。
sendfile 选项 默认是on,on表示启用高校传输文件模式。它直接向内核发送指令,让内核读取文件。读去完成后内核直接推送给网络。off则表示直接从磁盘中以字节流读取文件,才将其以字节流的形式复制到内核中,内核再把文件推送到网络。
从上面 过程分析,设置为on时,少一次复制过程,性能上会提升。
关闭sendfile可能导致如下影响:
1.增加了数据复制的开销
2.增加了上下文切换的次数
因此可能会影响吞吐量,修改需要谨慎。
这个方法对静态文件有影响,对动态文件则无效。
这个站点使用了php,php文件经测试更新生效时间从1-30秒不等。
大多数时候不会立即更新。
检查php.ini配置文件,发现其实用了opcache
revalidate_freq这个值设定60秒
修改为3秒。
这个选项是设定检查文件的时间戳间隔,时间越短,检查越频繁。
但是过于频繁会增加开销,如果修改比较频繁,可以设定为个位数。
更改完毕重启php-fpm服务。
测试php更新文件,基本立即生效。