Monthly Archives: June 2013

无线开发使用长连接的目的

PC用长连接可以减少频繁建立连接的时间,提高响应速度。

但我们在PC上平时用短连接访问网站时,性能上也完全能接受;手机用短连接访问网站,照样也能接受吧?

是的。 但无线开发用长连接不仅仅是为了提高响应速度,更多地是为了节省流量、省电。使用长连接可以减少很多网络传输。

长连接要尽量维持

既然服务端跟客户端使用了长连接通信,就要尽量维持这个长连接,因为建立连接比较慢;服务端一般会用数据库、缓存什么的来维护长连接,所以重建连接对服务端的开销也有影响。

IOS应用被挪到后台时,服务端不应该再发数据,因为即使发了应用也不会处理;那怎么告诉服务端说不能再发数据了? 粗暴的作法是IOS应用进入后台时立即关断长连接。

但这种做法在一种情况下不利:应用进入后台后可能又会很快被用户切回前台,这时又得重建长连接,用户体验会很差。

合适的作法是应用进入后台时发个报文给服务端,让它暂停发送;恢复到前台时再发个报文,让服务端恢复发送。

mysql全文搜索的注意事项

1. 调整一下可索引term的最小长度,mysql默认是4,即4个以上字符的词才会被索引;但对中文来说,两个字就应该索引了。

查看

引用

mysql > SHOW VARIABLES LIKE ‘ft_min_word_len’

修改:

引用

#/etc/mysql/my.cnf

[mysqld]

ft_min_word_len = 2

最后重启一下mysql server

2. mysql全文索引只能通过空格、标点符号之类的进行分词,这对中文来说不可接受。为了解决中文分词问题,可以把字符转为unicode后再存储:
http://www.xingdonghai.cn/mysql-fulltext-index-with-unicode/.

3. 默认的搜索模式会返回看起来严重不相关的东西;最好用boolean mode. 使用这种模式时应该过滤掉空格和加号(UCS-2编码分别是"8192"和"11008"),否则会影响命中率。

.htaccess被忽略了?

看看你的virtual host是不是有这个错误:

引用
<Directory "/home/page_url/www/">

    AllowOverride None

你要去掉AllowOverride None. 如果 apache版本较低,还要加上AllowOverride All

引用

Syntax: AllowOverride All|None|directive-type [directive-type] …

Default:AllowOverride None (2.3.9 and later), AllowOverride All (2.3.8 and earlier)

http://stackoverflow.com/questions/5210820/apache-server-ignores-htaccess

websocket的ping和pong

作用:A Ping frame may serve either as a keepalive or as a means to  verify that the remote endpoint is still responsive.

Ping和Pong的关系:

  1. Upon receipt of a Ping frame, an endpoint MUST send a Pong frame in response…

  2. A Pong frame sent in response to a Ping frame must have identical "Application data" as found in the message body of the Ping frame being replied to.

见:
http://tools.ietf.org/html/rfc6455#section-5.5