第六十一章 CSP的常见问题 - 我希望我的页面每60秒自动刷新一次。我应该怎么做?
如何在页面之间传递信息?
传递信息有多种方式:
- 将信息作为附加参数放入到下一页的链接中。这些可从
%request
对象访问:
http://myserver/csp/user/mypage.csp?id=3&name=bill
要访问信息,请使用%request.Get(“id”)
。
要直接在页面上显示信息,请使用 #(%request.Get(“name”))#
。
- 使用
%Response.Context
多维属性可以定义一组名称-值对,这些名称-值对由CSP
引擎自动添加到所有链接和表单。 - 将数据放入
%Session
对象中。如果用户同时在两个浏览器中打开应用程序,这可能会导致问题。
如果会话超时,我想将用户转到另一个网页。我该怎么做?
实现这一点的最简单方法是在元标记中设置重定向,使其在超时后立即发生:
<html>
<head>
<META HTTP-EQUIV="REFRESH" CONTENT="910;
URL=youhavetimedout.csp">
</head>
<body>
<script language="cache" runat="server">
%session.AppTimeout = 900
</script>
</body>
</html>
我希望我的页面每60
秒自动刷新一次。我应该怎么做?
在CSP
页面的头部,使用以下元标签:
META HTTP-EQUIV="REFRESH" CONTENT="60; URL=mypage.csp">
%SYS.cspServer
、%SYS.cspServer2
和%SYS.cspServer3
进程是什么?为什么在一个不太繁忙的系统上可能会有比预期更多的它们呢?
%SYS.cspServer
和%SYS.cspServer2
例程是处理CSP
请求的服务器例程。
%SYS.cspServer3
处理与CSP
网关的异步通信,即每当缓存实例需要在用户请求的上下文之外与网关交换信息时。例如,对于使用网关管理器接口(^CSPGWMGR和CSPButton
使用的%CSP.Mgr.GatewayMgr
)的异步Web套接字请求和交互,这是必需的。
有两种类型的CSP网关进程:
- 为
CSP
请求提供服务的进程(有时称为工作进程)。这些进程使用%SYS.cspServer
和%SYS.cspServer2
。这些进程在空闲并等待新请求时位于%SYS.cspServer2
中;在处理请求时,它们可以在任何例程中。 - 管理网关的进程(有时称为服务器进程)。这些进程在空闲时位于
%SYS.cspServer3
中。
系统中存在的工作进程或服务器进程的数量各不相同。该数量取决于连接到Caché
的web
服务器的配置以及这些web
服务器接收的并发请求(即负载)的数量。
通常,每个连接到Caché
的web
服务器进程都有一个服务器进程。但是,其他因素也会对此产生影响:
- 一个实例可以连接多个
web
服务器。 - 每个
web
服务器可以有多个进程。
例如,对于Apache
,当使用Prefork
多处理模块(MPM
)时,默认行为是为每个连接使用一个web
服务器进程。相比之下,worker
和event MPMs
在同一个webserver
进程下使用多个连接;这就是为什么这些模块推荐与CSP一起使用,而不是Prefork
。在Windows
上,IIS
应用程序池通常在单个进程中运行,但也可以配置为使用多个进程。
web
服务器具有控制工作进程数量的设置。在CSP
中,每个webserver
工作进程都与一个到Caché
的连接和一个Caché
工作进程(例如%SYS.cspServer2
进程)相关联。web
服务器根据负载动态增加工作线程的数量(达到配置的限制)。也有一些设置来控制何时关闭这些工人,但这通常不会很快发生。这完全由底层Web
服务器控制,而不是Web
网关。
值得注意的是,Caché worker
进程可以处理任何传入的请求,并且不与特定的用户会话相关联。(此规则的例外是使用状态感知或保留模式会话的CSP
应用程序,这是一个非常旧的配置选项,不推荐使用)。系统中工作进程的数量大致与服务器最近接收到的最大并发请求数量相匹配。工作进程数和当前会话数之间没有关系。工作进程可以比活动会话多得多,活动会话也可以比工作进程多得多,这都取决于应用程序的行为。
另请注意,CSP
工作进程和服务器进程不消耗许可证。许可证与CSP
会话相关联。