在处理我的webapp(需要登录整个网站)时,我注意到一个有趣的“故障”(如果你可以称之为)。我正在查看我的Django站点,登录Chrome中的站点(在测试服务器上)。然后我退出了我的网站并完全关闭了Chrome。
然后我打开Firefox并粘贴到我的Django网站的URL,期望被带到登录页面。但是,我没有被要求登录,而是已经登录。所以我继续退出网站并关闭Firefox。
然后我重新打开Chrome登录,却发现没有CSS样式。我登录后,整个网站都丢失了CSS样式,测试服务器保留了所有CSS和IMG文件的304
错误。
我已经发现304
错误与时间错误匹配有关(就像Django认为我已经注销了,但在Firefox中我登录了 - 所以现在它很混乱)。
我只是想知道这是否可以避免,或者它是否是测试服务器的“功能”?这种事情也会在生产模式中发生吗?
当我使用Apache启动webapp时,由于我在使用Django测试服务器 时遇到的304错误导致样式和图像的丢失会继续发生 吗?
谢谢!
答案 0 :(得分:0)
你对三件事有疑问:
不幸的是,对于您所看到的前两个问题,有很多可能的解释。很可能没有太严重的错误。
对于前两个问题,您可以尝试恢复到新状态,然后查看问题是否仍然存在。例如使用干净的Django数据库(没有会话)并尝试清除所有缓存的浏览器信息(cookie,auth,缓存文件)。不可否认,这是一个非常耗时的测试问题的方法,但它是我能提供的最好的一般建议,而不能直接检查你的情况。
幸运的是,304回复根本不是问题。 304仅表示浏览器在其缓存中具有该文件。见Conditional View Processing:
当客户端下一次请求相同的资源时,它可能会发送一个标头,例如If-modified-since,包含它发送的最后一次修改时间的日期,或者If-none-match,包含它的ETag发送。如果页面的当前版本与客户端发送的ETag匹配,或者资源未被修改,则可以发回304状态代码,而不是完整响应,告诉客户端没有任何更改。