众所周知,现在的PHP开发基本上都是前后台+服务器通吃,虽然都是各种三脚猫,但毕竟也算是大半个全栈。
开发网页的时候,最烦的事情就是页面上改个文字,都得cmd+r(F5)刷新一下网页看看效果。前端这两年在这个上面改进了很多。比如npm run watch,其实就是监控文件改动。自动刷新一下页面。别看这个功能不复杂,但其实会浪费很多时间。比如双屏电脑的时候,听起来很方便,一个屏幕写代码,一个屏幕看效果,但你其实试一下就会感觉到累了:代码写好,鼠标移到另一个屏幕,点击一下浏览器,按一下F5,看一下效果。如果不对,回来再试。。。
以前都忍了忍,但如果改动多了,其实真不能忍。于是找了browser-sync这个软件,他可以代理你本地的网页,设定好监控的文件,改动后,他就会主动刷新页面(看了一下,就是在页面里嵌入了socket.io组件,一旦有更新,软件主动往ws里发通知,让他执行location.reload 之类的)
正常使用的时候都没问题,也自我感觉良好,直到有一天,我POST数据的时候发现了一个奇怪的事情。POST一个JSON数据,一个使用Quill生成的HTML,被我用JSON包了起来的数据。看了一下SQL的LOG,全部提交了两遍。更关键的是,第二次提交的时候。JSON结构还在。但HTML全部没了。。。。这个就太妖异了。
一开始我一直以为是自己哪里程序写的有问题,触发了两次或者触发了XSS的保护,但仔细找了一下,也没有发现自己有使用中间件。
最后排查browser-sync,因为他是代理访问。类似browser-sync --proxy,那就想了,是不是第一次我提交后,他提交了。然后又提交了一次?毕竟是第三方软件,我也没有深究的想法,直接关闭browser-sync的进程,再测试。果然,一次过。也没有提交两次。。。
为了这玩意,我被折腾了2小时。所幸这个小问题影响不大(正常如果只是看页面,几乎完全无影响,后续,我还是准备将页面做成象nova那样。估计会好很多)
--EOF--
都说要知其然并知其所以然,但也没有那么多时间来查看,所以就先这样,也许等有时间的时候好好的探究一下,为什么啥都不变,就将我的HTML那一小段给删除了。。