Apache rewrite 规则解析时,把 uri 转换成 target 后,还要重新验证所有规则。 如果你写了多条规则,按优先级排列,需要注意了,[L] 这个 flag 可能不是你想象的那么简单。 比如: RewriteRule ^apple/(.*) apple.php […]
Web开发
Raw POST Data PHP 获取 HTTP 原始 body 部分的数据
通常做网站开发时,POST 数据都是从页面 form 表单中提交到服务器,POST Data 都是 key_1=value_1&key_2=value_2 这样的形式。这样的字符串,PHP 会自动解析到 $_POST 数组中。 有另外一种应用场景,在开发基于 HTTP 协议的接口时,客户端把一段 XML […]
FCKeditor 2.6 安装 配置 问题 图片上传
今天给使用 Symfony 的项目装了 FCKeditor 编辑器,配了图片上传。 遇到一些问题,总结下。 安装时,为了简单,最好把解压的 fckeditor 文件夹放在 web/ 目录下。 在模板中加入编辑器很简单: $webDir = sfConfig::get(‘sf_web_dir’); // DocumentRoot 的服务端路径 […]
Apache ReWrite QUERY_STRING 问号 ?
看一条应用中简单的 rewrite 规则: 将请求: http://www.leakon.com/soft/install?ver=2.0 rewrite 为: http://www. leakon.com/my/soft/install.php 配置文件 httpd.conf 加上如下配置: RewriteCond %{QUERY_STRING} ^ver\=([0–9]+\.[0–9]+)?$ [NC] […]
链接 样式 定义 顺序 link visited hover active
这是我 3 年前遇到的问题了,当时解决过,后来记不太清楚,今天又复习了一遍。 给 A 标签定义样式,有四种状态: link 没被点过的链接 visited 点过的 hover 鼠标悬停在链接上 active 鼠标点击按键后 至 […]
Web 前端开发 Firefox 扩展
我在搞 Web 前端开发时用 Firefox 浏览器,有几个必备的扩展,非常好用,今天整理一下,给大家分享,也给自己列个清单备忘。 Firebug 不用说了,必备 YSlow 网站性能优化建议 Web Developer 必备 Tamper Data 这个需要重点介绍,当你也要做服务端开发时,客户端和服务器交互的 http 头部和 body 到底是什么样,都能准确地列出来,这曾经帮我发现并解决过重要的问题,强烈推荐。 […]
http header Expires not modified 304
困扰了我好久,看了 YSlow 的文档,也看了好多网站优化的书,按照书上的说法,加了 expires 和 cache-control 头,静态文件被缓存后,浏览器就不会再次发送请求了。 可是我看 apache 日志,仍然是有请求发到服务器,apache 发送 304 响应头。虽然起到了缓存的作用,但我希望是完全的客户端缓存,也就是说浏览器根本不会向服务器发请求询问。 今天又 google […]
SofavDB_Debug_PDO MySQL 执行时间 日志
这个类可以完全替代 PDO,如果你需要知道自己的程序跟 MySQL 交互花费多少时间,而你又有洁癖,不想把自己的代码搞得一团糟,那我强烈地建议你试试这个 SofavDB_Debug_PDO。 通常,创建一个 PDO 连接,都是 new PDO()。 在开发环境中,你只需要把上面那个语句替换成 new SofavDB_Debug_PDO() 即可。 然后,凡是通过 prepare 的 […]
MySQL 索引 优化 Using filesort
MySQL 数据库,MyISAM 类型的表 table_item,有 5、6 个字段,主键是 id。 user_id 和 item_id 两个字段都是单独的 INDEX 类型的索引。 问题是如何发现的? 今天搞程序,在自己的开发环境下,打开一个简单的页面都要好长时间,不知道问题出在哪里,只发现硬盘灯闪个不停。 […]
Javascript 字符串 数字 浏览器 性能差别
我在做一个 Javascript 版的公历农历转换程序,功能完成后,需要对性能做优化。计算算法是在网上找的,原作者对历法的转换很精通,但对程序性能没有仔细考虑,当计算量大的时候,会给用户的浏览器造成很大压力,给用户的感觉就好像浏览器假死一样。 我花了2天时间在性能优化上,并在不同的浏览器下做对比测试,发现一个比较重要的差别,IE、Firefox 和 Chrome 之间的区别很大。 通常,生成一个月的日历,最多需要计算42天(可参考Google Calendar,每行代表一周7天,最多可能有6行)。 性能测试的时候,我让程序连续计算3年,共36个月,1000多天。 总的运行时间是: IE7: 2.828 s Safari3: 1.016 s Firefox3: 0.885 […]