-3

我正在使用这个简单的代码。

#include "gwan.h"

int main(int argc, char *argv[]) 
{
  xbuf_t *reply = get_reply(argv), *read_buff;

 read_buff = (xbuf_t*)get_env(argv, READ_XBUF);
 xbuf_cat(reply, "START\n"); xbuf_ncat(reply, read_buff->ptr, read_buff->len); xbuf_cat(reply, "END\n");

 // this line is important if I don't use read_buff everything seems OK
 // but I need parse read_buff :(
 printf("%s\n", read_buff->ptr); // this line is most important

return 200;
}

起初一切似乎都很好

shell:~$ for I in seq 0 1; 做 curl -A "" -H "TST: ${I}" ' http://test.com:8080/?read_buf.c&scp=3 '; 完毕

START
GET /?read_buf.cscp=3HTTP/1.1
Host: test.com8080
Accept: */*
TST: 0

END
START
GET /?read_buf.cscp=3HTTP/1.1
Host: test.com8080
Accept: */*
TST: 1

END

再次执行我的循环

START
GET /?read_buf.cscp=3HTTP/1.1
Host: test.com8080
Accept: */*
TST: 0

END
START
GET /?read_buf.cscp=3HTTP/1.1
Host: test.com8080
Accept: */*
TST: 1

END

再次执行我的循环

START
GET /?read_buf.cscp=3HTTP/1.1
Host: test.com8080
Accept: */*
TST: 0

END
START
GET /?read_buf.cscp=3HTTP/1.1
Host: test.com8080
Accept: */*
TST: 1

END

但有我的问题。哪里 TST 仍然是 0 ?

再次执行我的循环

START
GET /?read_buf.cscp=3HTTP/1.1
Host: test.com8080
Accept: */*
TST: 0

END
START
GET /?read_buf.cscp=3HTTP/1.1
Host: test.com8080
Accept: */*
TST: 0

END

再次执行我的循环

START
GET /?read_buf.cscp=3HTTP/1.1
Host: test.com8080
Accept: */*
TST: 0

END
START
GET /?read_buf.cscp=3HTTP/1.1
Host: test.com8080
Accept: */*
TST: 0

END

为什么?由于缓存?如何禁用它?

PS:servlet 在 G-WAN 4.3.14 上执行

4

1 回答 1

0

由于这个问题是在我们通过电子邮件回复发布的,因此毫无疑问其真正目标与所谓的技术借口相去甚远。

为了让人们做出判断,以下是我们通过电子邮件发送给那个人的回复:


所有用户都会看到您的脚本显示的内容。

而且您的脚本没有使用任何用户会话。在并发下,此脚本以相同的方式为所有客户端显示相同的信息。

G-WAN 检测到这一点,这会触发它的缓存,因为您的脚本很慢(可能是由于打印到控制台)。

现实世界中不存在这样的应用程序:您将使用个性化的 URI 参数,或 POST 实体,甚至是 Cookie——这是您的测试小心避免的东西——因此它是无关紧要的。

此外,您可能会从阅读 G-WAN 常见问题中受益:

http://gwan.ch/faq#cache

最后,创建 G-WAN 并不是为了与任何现有的 Web 框架竞争。目标仅仅是满足我们自己项目的需求:

http://twd-industries.com/

在这里,G-WAN 非常适合这项任务,因为我们编写它的目的是为了正确使用它。

于 2013-04-05T11:38:35.047 回答