关于 Cache(3)

Posted on 5th August 2004 by Nio in Cache, 程序人生

跟进中:Michael Radwin discusses HTTP caching in OSCON 2004. Points out that cookies do not need to be transmited for static images, and this requires separate domain. You really have to use a proxy software like TCP Trace to monitor HTTP behaviour.

关于 Cache(2)

Posted on 30th July 2004 by Nio in Cache, 程序人生

今天发现 PHP Everywhere 还在讨论前两天的 WEB Cache 问题:Caching Personalised Pages,文中就 Shaz 的评论进行分析,提到了几种关于如何实现个性化页面的 Cache 的方法:

1) 使用 SESSION 存放用户个性化数据,比如用户名、头像图片地址之类的数据,但是这种方式不能存放过多的数据。

2) 将用户个性化数据集中在页面的某个区域,然后将页面的其他部分生成静态的 HTML 文件。当然,这是比较理想的状况,一般可能不会太容易实现。

3) 为了更新过时的数据,可以使用计数器,用于保存页面的更新次数,此计数器值保存在数据库中,然后创建触发器,此触发器可以保存在像 PostgreSQL 或 Oracle 这样的数据库中,也可以在 PHP 代码中实现。每次用户登录访问页面时,取出页面的更新计数值,与用户 SESSION 中保存的这个值进行相比较,如果这两个值不相同,表示页面已经更新,此时触发器将重新加载用户的个性化数据。这种方法必须是 [u]获取更新计数的代价[/u] 小于 [u]更新用户个性化数据的代价[/u] 才行。

4) 另外一种方式是利用客户端浏览器 Cache 数据。创建一个由 PHP 生成的 JavaScript 代码文件,用户登录之后会通过此 JavaScript 获取其个性化数据。当然,此 JavaScript 必须输送恰当的 caching 头文件信息,否则浏览器不会进行正确更新缓存文件的动作。保存个性化数据的 JavaScript 代码类似于:

theUser='<?php echo $_SESSION['USER_NAME'J; ?>';
theFavoriteIcon = '<?php echo $_SESSION['FACE_ICON'J; ?>';

在生成的静态 HTML 文件中,使用如下代码输出个性化数据:

<script> document.write(theUser) </script>

此技巧可以在服务器端 Cache 整个 HTML 页面,另外还可以在客户端 Cache 用户个性化数据。

在我的实践中,使用过第 1、2、4 在种方法,还有一种方法就是将动态的数据放入 iframe 中,只不过这种方式通常会导致页面不太美观。我非常赞同最后一种方式,因为这种方式可以将动态数据与静态 HTML 文件分开,很好地实现 Cache 页面的目的。另外,HTTP conditional requests in PHP 写得很棒,以前对这个机制一直不是很了解,这几天决定研究研究。

关于 Cache(1)

Posted on 28th July 2004 by Nio in Cache, 程序人生

今天看到 PHP Everywhere 中有一篇关于 Cache 的文章:The Way of the Cache。文中谈到一个关于各种 PHP CMS Cache 的 benchmark,参与比较的 PHP CMS 包括:* e107 0.615
* Drupal 4.4.2
* Xoops 2.0.7
* Manbo 4.5
* Post-Nuke
* Xaraya 0.9.9

image

(more…)