我有一个带有用于站点搜索的表单的页面。该表单使用 POST 动词来提交要搜索的数据。提交后,搜索结果显示在表单下方。
为了解决 IE 上的“页面已过期”问题,我使用了所谓的 PRG 模式 (http://en.wikipedia.org/wiki/Post/Redirect/Get)。所以我从我视图的 post() 方法返回 django.shortcuts.redirect() ,该方法重定向到相同的 URL。
问题是,在生产中,我看到与 302 响应后发送的 GET 请求相关的不同会话 ID。由于我将表单存储在会话中以便能够将结果拆分为页面,因此我得到的结果不一致。
我在 apache/mod_wsgi 下运行 django。apache 配置为最多运行 3 个进程。
它不会在我重新启动 httpd 后立即发生,并且它似乎是在 httpd 进程消耗的内存量达到某个限制后开始发生的。
我通过反复按下提交按钮来检查这一点,表单从会话中填充,因此我可以看到我输入的搜索字符串。当会话更改时,表单返回空白。因此,当这种情况开始发生时,表单会连续成功填充 2 次,当我第三次按下提交时,它返回空白,这意味着服务器返回了新的会话 cookie。这似乎与 ServerLimit 设置有关。
怎么了?有任何想法吗?
谢谢
康斯坦丁