如何避免PHP中的一些SQL查询?

时间:2013-09-28 00:27:59

标签: php mysql

我正在使用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)和一个选项调用新闻。当用户单击它时,将执行相同的查询,但不一定是相同的响应。

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

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

很抱歉,如果我的英语不太好,那就不是我的母语了。

谢谢。

1 个答案:

答案 0 :(得分:0)

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

嗯,这里有一个缺点,你仍然需要对数据库进行查询(使用WHERE子句来过滤结果,如'WHERE ... TIMESTAMP> last_timestamp_from_browser')这是完全有效的,SGBD是专为如果您没有数千名用户同时访问您的网站,则不会有任何问题。使用这种方法,您只能保存bandwitdh,因为仍然可以建立与数据库的连接。

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