我做了这个javascript/php/mysql, 2个用户,聊天。每隔3秒,它请求(ajax)带有消息的php文件并更新页面。php查询数据库:
SELECT * FROM tmessagges WHERE author='Jack' OR author='John'
我可以优化吗?
我认为优化的第一件事是当没有新消息时浪费的所有请求,但我不确定是否值得…可能只选择id或计数,只有当有新消息时才发出第二次请求。
SELECT id FROM tmessagges WHERE author='Jack' OR author='John'
或
SELECT COUNT(id) FROM tmessagges WHERE author='Jack' OR author='John'
则第一个查询,如果有新消息。
值得吗?因为我认为cpu使用率是一样的,只是流量更少…
或其他优化方法
为每条消息设置一个序列号,然后只请求比该序列号"晚"的消息。
只查找一个"名称"——可能是"消息ID",而不是"Jack"或"John"。
现在查询更短了:
SELECT * FROM Messages WHERE seq > 12345 AND msg_id = 199;
通常只会返回一些"空"的回复。当有消息时,它将只返回新消息,而不返回会话的其余部分。
此外,不要通过网络发送SQL。相反,使用某种最小化流量的协议,例如
"new;12345;199"