siteFactory 防刷新模块RefreshModule
一般防刷新都是在服务器端实现的,思路如下
生成一个随机标签,保存到Session里(或是类似的缓存里),同时把标签发到客户端,通过表单隐藏字段,Cookie等手段.
用户回发时(提交页面)会对比这2个标签,相同就表示正常提交,不同的话则表示刷新.
说到这里,想起 <<Asp.net 2.0 高级编程>>里的一个错误,作者在讲解httpmodule时展示了一个防刷新模块,这个模块没考虑多用户的情况,在打开一个浏览器测试时是正确的,但是当你开2个浏览器时就会出错.
下面是SiteFactory的实现思路
在客户端页面的post操作时,附加一个隐藏字段,这个值是一个随机生成的32位Guid(貌似没有十六进制的F),
服务器端维护一个队列,队列里的数据是这些Guid,当客户发出post动作时,会比较提交上来的guid是否存在于队列里,
如果存在就表示是刷新页面操作,反正就表示正常提交,这个时候会把提交上来的Guid入队,如果队列长度达到设定值,则进行一次出队操作.具体代码看PowerEasy.Web.dll程序集
分类:
认识动易SiteFactory
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述