我自己写的 PageStatePersister 类基于 SessionPageStatePersister 其中写了最近的 10 个 Viewstates 表示到共享磁盘的会话。我认为这会比保留更好的规模 Viewstate 由于所有 Web 服务器都可以访问它,因此它们不必处理过期问题,并且使用更少的内存。

当用户关闭浏览器时,它会通知服务器,服务器会删除那些两小时内未访问的文件。到目前为止一切都很好,但我想知道存储是否会更快、更有效 Viewstate 而是在 SQL Server 数据库中。

  1. 每个 ViewState 文件平均为30k。
  2. 目前它只是读取隐藏字段来获取 Viewstate 键并直接访问文件并反序列化。无需排序或搜索。
  3. 每小时大约有 2000 个并发用户,并且每小时保存最近 20 个 Viewstate 会话将大约有 20k 临时视图文件。
  4. 它必须定期遍历文件并删除最旧的文件。

那么在这种情况下哪个更好:A 平面文件 系统或一个 数据库?

有帮助吗?

解决方案

将 ViewState 存储在 SQL Server 中会更好地扩展。例如,如果您最终希望从最近 10 个增加到最近 50 个,则数据库负载的增加相对较小。通常应尽可能避免磁盘 I/O,而不是 DB I/O。清理操作也会工作得更好,因为在磁盘上废弃文件的荒地中寻找可能比 WHERE DateInserted > 20 minutes ago.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top