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 类型的索引。 问题是如何发现的? 今天搞程序,在自己的开发环境下,打开一个简单的页面都要好长时间,不知道问题出在哪里,只发现硬盘灯闪个不停。 […]

Apache 漏洞 PHP 文件 上传

标题党一下,其实这个不应该算是 Apache 的漏洞。 简述漏洞情况: 有的网站有文件上传功能,尤其是可以上传 rar 文件的。如果文件名是 abc.php.rar,而且这个文件被放在了 http://www.leakon.com/uploads/abc.php.rar,你在地址栏输入这个地址,Apache 就会调用 PHP 模块去解析 abc.php.rar。 为什么会解析呢? 因为 Apache […]

PHP clone 复制对象 优化对象创建速度

用 clone 结构来复制一个对象。 PHP 的对象赋值,默认是引用传递。 如果需要一个对象的副本,只能用 clone。 从性能上考虑,当在一个循环中需要反复创建一个新对象的时候,可以考虑在外层创建,在循环内层用 clone 来复制对象。这样性能将会得到很大提高。 这里有实地测试的代码和测试结果可以参考: <<PHP 对象克隆 性能优化示例>> 引用一下结论: […]