我有一个 Web 应用程序,它是前端控制器模式的实现,如下图所示。具体来说,我遵循了前端控制器模式的代码示例,如this question's answer中所述:
我的 .jsp 页面之一出现更新问题。这个页面特别有一个弹出编辑器,它允许用户添加或删除外部数据库中数据集的链接。如果用户点击保存按钮,它会发送一个请求,该请求被前端控制器拦截。然后,在系统自己的数据库上执行保存或删除参考链接(多对多 ID 号)的正确操作。之后,应该重新加载页面,这会触发一个链接命令,该命令从两个数据库加载数据,然后重定向到基本上相同的页面,而不会弹出。
但是,由于某种我不理解的缓存形式,该页面没有重新加载。我已经尝试了所有我能找到的解决方案,以防止加载缓存的数据,从向 URL 添加唯一值,到在 jsp 页面上添加元标记,以防止它被缓存。我已经确认数据正在服务器端加载。一个简单的 F5 点击更新页面,就像它应该自动做的那样。
我还在弹出窗口上实现了一个 onClose 函数,它调用了 window.location.reload()。然而,这个调用会中断前端控制器,并停止它当前正在做的一切,以处理最新的请求。这会产生竞争条件,在前端控制器开始重新加载页面之前,有时可以插入/删除数据,有时则不能。
我应该排队吗?有充分的理由不这样做吗?Front 控制器的执行方法,还是类本身应该实现某种同步?