0

我正在使用 jQuery 和 Twitter Bootstrap 开发一个 PHP Web 应用程序。它使用 AJAX 处理一切。所以,我在 HTML5 中展示了一个表单,用户按下一个按钮 (class="btn"),表单被发送到 PHP (jQuery, AJAX),PHP 向 MySQL 进行查询并回显一个答案,如图所示表单(jQuery)。这基本上是网络应用程序的工作方式。

但这是交易,它显示的第一个表单,它是一个显示一些新闻的 div。例如:

 A new user was created.
 There is new important date.
 Someone wants to text you.

所以我在 MySQL 中创建了一个名为 News 的表,其中我保存了一些值,而不是像这样的值:

 1: A new user was created
 ...

每次用户登录都会看到。这意味着当用户登录时,一旦加载 HTML5,就会有一个查询和一个响应。

index.html 文件有一个导航栏 (Bootstrap) 和一个名为 News 的选项。当用户单击它时,将执行相同的查询,但不一定是相同的响应。

我想在用户执行操作时用新闻修改 div。但是,一个动作也可以由另一个用户完成。所以有必要再次进行查询!

是否有任何解决方案可以让我在用户想要获取新闻时避免查询数据库?或者我怎么知道现在有必要更新 div?我正在查看缓存查询,但没有得出结论。

对不起,如果我的英语不太好,那不是我的母语。

谢谢你。

4

1 回答 1

0

您可以在来自服务器的每个新闻响应中发送时间戳并将其保存在 javascript 中。下次您发出请求时,发送您保存的时间戳,服务器会检查是否有最新消息,如果没有,则不发送任何消息,因为最后一个响应仍然是最新的。

好吧,这里有一个缺点,您仍然需要对数据库进行查询(使用 WHERE 子句过滤结果,例如 'WHERE ... TIMESTAMP > last_timestamp_from_browser')这是完全有效的,SGBD 就是为此而设计的,如果您没有成千上万的用户同时访问您的网站,不会有任何问题。使用这种方法,您将只保存带宽,因为与数据库的连接仍然存在。

还有另一种方法可以防止建立这种连接,缓存一些最后插入的新闻的值,这些值可能是用户特定的或全局的,并将它们保存在 APC 模块(或 memcached)中。您需要发现要缓存的内容和时间(例如,您不能缓存整个数据库,只能缓存一些组织良好的时间戳,也许是最需要的新闻)。这样可以防止建立数据库连接。这将迫使您编写更多代码,因此,仅在您真正需要时才使用它,例如一次连接数千个用户。

于 2013-09-28T00:55:01.757 回答