我有一个基于非常简单的数据库的asp页面。 它引用了一个大约包含 30 条记录和 12 个数据字段的表,一切都运行良好,因为我每周左右只上传一个新数据库。
我有一个特殊的情况,我想将新数据上传到数据库并每 20 到 30 秒自动显示在页面上,而无需用户刷新屏幕。 我预计最多有 1000 个并发用户访问数据。
我一直通过 ftp 手动上传数据库,这显然在这个时间线上不起作用,并且在更换数据库时还会面临出现错误页面的风险。
那么,有人能给我指出设置这个场景的正确方向吗?
其他可能有帮助的详细信息: 数据库是Access数据库(但如果需要我可以更改为其他格式) 在 ISP 托管的 Windows 平台上运行,而不是我自己的服务器
您需要了解 javascript 才能执行此操作。你是吗?
您可以使用 javascript 中的 setTimeout() 方法每 30 秒向您的服务器发送一次请求以获取更新的内容。该请求将是一个 AJAX 请求。
请参阅:http://www.asp.net/ajax/了解更多信息。
您应该只更新服务器上数据库中的记录,而不是上传新数据库。这样,当页面想要读取数据库时,就不会出现数据库不可用的问题。
HTTP协议中没有服务器推送,所以你必须从浏览器检查更新。您可以使用 AJAX 调用服务器来防止页面重新加载。
如果您要手动创建自己的 Ajax 解决方案,您将需要了解 XmlHttpRequest 对象。它有一个回调函数,您可以指定在返回时用新数据更新 HTML DOM,正如 @hobodave 指出的那样,使用 setTimeout() 函数将下一个请求延迟适当的时间。您需要创建一个 Web 服务来以预先格式化的 HTML 或 XML 或JSON 等某些数据结构返回数据。
当用户发出新请求时,应该只向他们发送已更改的数据。如果没有数据改变,那么只需向他们发送一个新的时间戳,而不是再次发送所有数据。请求应始终包含他们上次收到的成功更新的时间戳,然后您的请求应仅向他们返回更改的新数据。
根据您更改数据的频率,您可以缓存数据服务器端的所有处理,然后将它们发送为已格式化的 HTML 以插入到页面中。
现在,每次上传新行或更改行(您需要一些 SQL 技能以避免上传整个数据库)时,您都可以为网页生成必要的输出,并在下次查询。你真的不希望人们不断地询问数据,除非有可能发生了一些变化。
总而言之,如果您不必担心过时的数据或过多的服务器端处理,那么一种非常简单的方法是使用元刷新标记自动刷新整个页面,但您可能会遇到性能问题如果您每次都必须处理服务器端的数据,那么这根本无法很好地扩展。
@grid.GetHtml( 表样式:“网格”, headerStyle: “头”, 交替行样式:“alt”, 列:grid.Columns( grid.Column(格式:@Edit), grid.Column("标题"), grid.Column("流派"), grid.Column("年份") ) )