从今年开始,一直在vagrant虚拟机上做开发
因前段时间一个项目需要调试静态文件,出现静态文件修改后,浏览器刷新不生效。
最后追踪到是nginx开启了sendfile这一项。。
具体sendfile原理可以查下,,网上写的都很详细,这里就不复述了。
一开始一直认为是nginx某个地方配置有问题。。但后来干脆自己写下,做下测试
具体代码如下(tcp那几步连接这里就不写了。网上很多):
/** * @connect tcp 连接句柄 */ int sendClient(int connect) { int fd; struct stat fileStat; off_t offset = 0; fd = open("/data/web/test.com/index.html", O_RDONLY|O_NONBLOCK); if (fd < 0) { perror("open file."); return 0; } //获取文件信息 fstat(fd, &fileStat); char buffer[fileStat.st_size]; // read(fd, buffer, fileStat.st_size); //write(connect, buffer, fileStat.st_size); sendfile(connect, fd, &offset, fileStat.st_size); close(fd); return 1; }
至些我测了下,得到的还是不生效,由此可以断定,与nginx无关,与系统调度有关
至于问题,我现在的回答只能是vagrant的一个坑,具体是什么,我也无从得知,
当然, 这个我也是从表象猜测, 如果有人知道真正的原因, 还请不吝留言指教