Python / HTTP - Web浏览器如何缓存工作?

时间:2017-10-26 08:47:17

标签: python http

我正在尝试使用socket模块使用Python创建一个(极简主义的)Web服务器。 我认为,我有一个问题,就是网页浏览器缓存。

说明:
当我加载页面时,第一次工作。它将在开始时工作2-3次,然后它将在我的浏览器每两个请求加载一次(我使用Firefox)。我按 F5 ,它工作,我重新按 F5 ,它无限加载任何东西,我重新按 F5 它的工作原理。 我查看了我的python控制台,似乎Firefox在页面加载失败时没有发送任何请求。 当我按下 Ctrl + F5 时,它总是有效,Firefox每次发送一个请求,我的网络服务器就会发送它。 我尝试添加HTTP标头以防止缓存(Cache-Control,Pragma,Expires),但它仍然可以在两个中运行。我使用Internet Explorer进行了测试,效果更好,但有时失败(4-5次请求,只会失败一次)。

所以,我的问题是:
为什么Firefox和IE有时无法发送请求,似乎还在等待什么? Web服务器应该做什么?

感谢。

1 个答案:

答案 0 :(得分:0)

这不是关于缓存。您不会在发送响应后关闭套接字,也不会告诉浏览器您不支持多个请求。因此浏览器会假设它可以使用相同的连接再次请求。

关闭连接,如果您声称支持HTTP 1.1,请添加适当的Connection标头。

每次请求后也不要绑定/关闭服务器套接字。没有必要,只会让事情变得不起作用。在启动时绑定,在关闭时关闭。

由于您告诉字符串的长度而不是您发送的实际数据,因此代码也可能在非ASCII数据上失败。这些可能不同。