如何禁用READ_XBUF缓存?

时间:2013-04-04 09:43:14

标签: g-wan

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

#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:〜{$ {我在seq 0 1;做卷曲-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上执行

1 个答案:

答案 0 :(得分:0)

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

为了让人们受到审判,以下是我们通过电子邮件发送给该人的回复:


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

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

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

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

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

http://gwan.ch/faq#cache

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

http://twd-industries.com/

这里G-WAN非常适合这项任务,因为我们写这篇文章是为了正确使用它。