跟LU有关的长工
10-20
mysql没有一个像mssql的客户端去管理,所以有了PHPMYADMIN,管理mysql不再单纯依靠命令行,但PHPMYADMIN似乎不是那么万能,偶尔也会耍耍版本细节的脾气。
最近使用mysql触发器,不想使用命令行编辑,但phpmyadmin调试缺比较麻烦,原来想的是先建立一个空的触发器,然后修改,后来发现修改迁移问题多的要死,在老王同学的帮助下,经过几个晚上努力,整理出一些规律。
调试的时候,可以在空的触发器上逐条增加语句,一点一点调试,这样很容易定位问题,迅速修改。
迁移的时候,不能直接编辑触发器拷贝里边的代码,我用的phpmyadmin是2.11.9*版本的,生成的代码虽然他自己认,但一迁移就出了问题,我还没去阅读PHPMYADMIN的代码,不知道代码如何产生,但begin end里的内容大致相同,不同的是两头的辅助语句。
两头的内容跟版本密切相关,用mysqldump导出的语句做模板,把过程添加到里边,基本就没什么问题了。
不同版本的语法稍有出入,没有详细总结,总之掌握了调试的方法,解决问题速度就会提升。
使用触发器后,原来十几次的交互,一次就可以解决。我尝试了下出发器和存储过程,发现开发成本都差不多,复杂度也是类似的,所以没有用存储过程。
最近修改UCH,改得头大,对他的东西大概也熟悉个七八。
暂且不用说他的代码质量,逻辑或者完善程度,但说这个产品的发展路子,这肯定是个有市场的东西。
UCH是国内最早搞开源sns的了,而且搭配上discuz这个用户量很大的东西,迅速在国内铺开。
当然要说代码质量,那个惨,bug无数。基本做PHP的程序员,死都不愿意改它。
但是很多项目还是拿来了,为啥?因为他适合中国的用户,为啥适合?抄facebook?当然也有一定关系,关键呢,是因为东西出来的早。
产品迅速抢占市场是老戴在discuz闭源收费到开源免费的一个战略性转变,也正是这个转变,让discuz有了更加快速的成长。
bug?功能的欠缺?每天在discuz官方网站上可以看到无数的抱怨。吵得,骂的,一群一群的,但仍然阻止不了新版本接连不断的发布。
用户就是在这样不断的期望失望再期望再失望中逐渐培养出来的。
ecshop,我自认为做的很好,只可惜推出较晚,被南边的大头抢了先机。老戴的产品肯定会发展好的,因为他已经不是一个程序员。
前言:本文经过我对大多数网站的http头分析、自己做网站中的一些缓存设置、服务器的一些配置优化,后又阅读了RFC2616HTTP协议相关内容,以做此文。
1、为什么要cache?
这是个经常提到但很多时候又无法突然准确回答的问题。粗略讲,就是要加速和减压。
加速:试想中国的网络,网通电信(就不提铁通之类)开创了互联互通新障碍,我们的用户在不多交钱的时候就得忍受奇慢的跨网速度。而作为互联网运营者,我们希望用户获得最好的用户体验,因此我们就要打破这个障碍。
很多互联网服务商已经用分布cache解决了这个问题,比如sina,把中心服务器的内容分发到各个省市的cache服务器,根据用户所在的网络(ip段)来确定用户拉去最近服务器上的内容,达到访问速度最快。
对于小型网站,页面静态化也是常用的cache方法,因为web服务器处理静态页面速度优于程序脚本,所以也起到了加速的作用,当然,也为了下一个原因-服务器减压。
减压:显而易见,动态脚本的输出速度比一个静态的页面要慢的多(解释、执行、数据库数据读取)。因此,如果我们让用户只是读取一个静态文件,那硬件成本就会很低。大量用户访问静态文件而很少访问动态脚本,如何以节约昂贵的硬件资源。
可以看出,cache还是有二利而无一害的。
最近调试squid,发现一个很奇异的问题,程序服务器都配置好后,使用ie狂刷,每次都是HIT,而是用firefoxF5狂刷,结果很多都是MISS,google后发现firefox独有的特性:
如果一个页面访问后,在地址栏再次敲入打开,则走cache,而如果点F5,则firefox发送http请求的时候会自动在头上增加 Cache-Control max-age=0 因此缓存失效。不过正常访问下,还是没有问题的。
原文:
I usually post about problems that I’ve solved. But every once in a while, for all my digging around and googling, I come up on something that I can’t solve quickly and thuroughly enough – so I post about it here in the hope someone can help.
To make a long story short – I’ve found out that FireFox 1.5 appends a “Cache-Control: max-age=0″ HTTP header to requests for ASPX files. This header tells the web server and any proxy servers on the way not to respond with cached version of the requested page and to go and run the actual ASPX instead.
For me, this is a big problem. It renders the NetApp NetCache reverse proxy that I’m using quite useless and impacts badly on response times for that particular page.
Does anybody know why FireFox adds this header to the request? How can this be circumvented either on the browser’s side or on the proxy server’s side?
It took us a bit to work it out.
If you hit refresh, firefox will ask for the latest copy (max-age=0).
If you type the url into the address bar and hit enter, then type it in again, it’ll cache.
Check it works in about:cache.
See also:
http://developer.mozilla.org/en/docs/Using_Firefox_1.5_caching
最近一直在研究代理缓存之类的东东,几个软件一直在瞎鼓捣,没弄出个结果,自己也稀里糊涂,总结一下几天折腾的成绩:
在并发上,nginx无疑是老大,做反向代理的时候,没有发现squid的并发方面介绍,所以暂且认为ngnix是老大,apache的稳定性有目共睹,但在并发方面的确不是很如意。
缓存方面:squid,apache都支持diskcache和memcache,根据http的head头来确定是否缓存,nginx不支持缓存,不过我在google开源上看见了新浪的水杨老大的一个东东,给nginx加上了文件缓存,不过没有大规模使用,暂时不把它当做一种解决方案。
在代理和缓存的规则上,apache很强,很强大的重写功能,尤其是强制修改http规则,不过这个功能我始终没有调试成功,no-cache的页面始终无法去缓存。
如果只是做网站的反向代理,负载均衡,nginx感觉要比squid强,性能强悍,配置方便。
如果是做代理+缓存加速,那squid的功能和稳定性还是很好的,毕竟在互联网上大量应用。
apache呢?好像没它的事情了。当然不是,有些地方可以拿他的功能当中间件使用,这个等下次分解。