存档

‘php’ 分类的存档

Web前端优化

2010年7月2日 谭俊青 没有评论

各浏览器并发下载数列表:

Browser HTTP/1.1 HTTP/1.0
IE 6,7 2 4
IE 8 6 6
Firefox 2 2 8
Firefox 3 6 6
Safari 3,4 4 4
Chrome 1,2 6 ?
Chrome 3 4 4
Opera 9.63,10.00alpha 4 4

随着宽带的普及,为充分利用用户的带宽,提升用户体验,可设置多个子域名。

Javascript和css尽可能从页面中分离出去,作为独立的文件。

为了减小header头大小,静态文件尽量用其他不带cookie的域名提供下载(当然还要兼顾到DNS解析时间)。
如:www.mysqlab.net用到

http://s0.mysqlab.net.cdn007.com/css/base.css

http://s1.mysqlab.net.cdn007.com/js/global.js

MySQL连接、memcache连接尽量在echo之前断开连接。

使用DBSession保持用户在线状态,方便负载均衡、统计、定位用户在线情况及跨域访问。

当前绝大部分memcached可以通过MySQLD来存储实现,具有更多的特性,如:安全、高可用等。
(MySQL基于主键查询可实现5000+qps每核心)

浏览器并发下载数参考:

http://www.stevesouders.com/blog/2008/03/20/roundup-on-parallel-connections/

分类: MySQL, Web前端, php 标签: , , ,

发布自己的DbSession类(for php)

2009年5月11日 谭俊青 没有评论

嗯,怎么说呢,自己几乎没用过php自带的session,都是基于这个类实现的。

【阅读全文·MySQL实验室】

分类: MySQL, php 标签: , , , ,

分库分表(sharding)后主键全局唯一性的解决方案

2009年3月27日 谭俊青 21 条评论

随着数据量的增大,在数据库的扩展上通常遇到切分时保证键值的唯一性问题,遇到这种情况,通常有如下几种相对简单的解决方案:

1  UUID 这种方案的优点是实现和管理简单,缺点是占用空间大,查询效率低下。

2  Sequence Number 优点是实现和管理简单,确定是有性能瓶颈和单点问题。

3  不同的集群采用的起始点或者增长间隔不同 这种方案实现简单,但是后期管理麻烦。

除了上述解决方案之外其实还有很多简单可行的办法,但是通用性不太好,在各种解决方案的接触上,本人总结出一个实现和性能上都很好的解决方案,那就是采用时间戳加毫秒数再加随机数来解决,存储字段采用bigint。
下面给出php代码实现:
function ivan_fetch_unique_bigint_id()
{
    $start_timestamp = 1238119411;
    $ivan_len = 3;
    $time = explode( ‘ ‘, microtime());
    $id = ($time[1]$start_timestamp) . sprintf(‘%06u’, substr($time[0], 2, 6));
    if ($ivan_len > 0) {
        $id .= substr(sprintf(‘%010u’, mt_rand()), 0, $ivan_len);
    }
    return $id;
}
取模测试均分性很好。
转载请注明出处,谢谢。
分类: MySQL, MySQL Innodb, php 标签: , ,