我想为服务器发回的每个请求提供一个“用户消息”。如果没有用户消息,则消息返回空白。如果有,则在他们的请求完成后,每个用户屏幕上都会激活一个图标。
[编辑] “用户消息”是管理员为我正在部署的应用程序设置的内容。管理员可以在字段中输入文本并单击按钮以将此消息发送给系统的所有其他用户。每当其他用户执行任何类型的操作时,当前用户消息都会附加到 JSON 响应并由前端处理。
为了优化这一点,我希望将消息存储在内存中(而不是数据库中)。
我曾尝试使用静态。我曾尝试使用 HttpApplicationState。在这两种情况下,用户消息的值都会在一段时间后“消失”。经过一番研究,似乎静态和 HttpApplicationState 都受到IIS的影响,并且它决定回收应用程序池。(或一些这样的)
静态变量的这种波动是神秘的:它应该是静态的——只要IIS本身存在,这个变量就应该存在。它不应该依赖于某种“重置”或其他什么。HttpApplicationState 是我不完全理解的其他一些情况。
我想要一种将值存储在我可以依赖的非易失性变量中的方法。如果我今天设置此值,它应该在明天或下周出现,只要IIS没有停止并重新启动。
有什么帮助吗?
这是我根据以下接受的答案为解决问题所做的工作:
- 用户消息是有时事。因此,当某个管理员设置消息时,将响应存储在该时间点的数据库中并将其存储在 Application["UserMessage"] 对象中。
- 当用户往返时,用户消息的内存文本被添加到 json 返回值中。
- 管理员可以随时清除该消息,这将清除内存中的消息和数据库字段。
- 当 IIS 认为足够了并回收应用程序时,Application_Start() 方法(以及其他任务)还将从设置用户消息时存储的数据库值中重新播种用户消息(按照步骤 1)。
现在应用程序按预期工作。对于进入系统的每个用户请求,无需支付额外的费用进入数据库 - 用户消息始终来自内存。除此之外,很少为用户消息更新或加载数据库。