整个页面请求的单个缓存文件

时间:2011-10-14 10:22:11

标签: php model-view-controller session caching filesystems

我正在尝试为PHP缓存服务类创建某种新的“文件系统”。我想要实现的目标是能够通过对每个图像的MVC模式类型调用来检测哪些图像对于来自站点的每个引用URL是唯一的。然后要缓存它,我想通过利用PHP会话将每个图像打包到一个文件中。我将找出一个系统来确定需要启动的会话,流式传输每个图像,以及处理每个http头。这就是它变得棘手的地方。

例如,假设我有一个加载localhost/images/moviecovers/movietitle001.jpg电影封面列表的网址。我设置了它,所以每个图像都将从images.php加载,其余的URL作为属性。因此,实际上很容易找到显式的localhost/media/movies/1 HTTP引用者的完整图像列表。

我想打包并分组确定经常从网站上的特定推荐人调用的图像列表。我可能会通过创建会话处理程序和操作组织的会话名称/ ids /路径来使用PHP会话。我没有做过很多基准测试,但我相信这是一个非常容易使用的高效分拣系统。

它可以让我做某种文件结构(包括我可能需要的任何其他信息):

//Unique to referrer of /images/moviecovers/...
$_SESSION = array(
    'image1'=>array(
        'type'=>'jpg',
        'modtime'=>filemtime(),
        'content'=>raw_image_data
    ),
    'image2'=>array(
        'type'=>'png',
        'modtime'=>filemtime(),
        'content'=>raw_image_data
    ),
    'image3'=>array(
        'type'=>'gif',
        'modtime'=>filemtime(),
        'content'=>raw_image_data
    ),
    ...
);

最终,我的目标是让它只需要为大量图像列表打开2-3个文件,但我需要了解如何在整个客户端中保持这些单个文件的打开状态加载。应该很容易检测到何时需要启动会话,但如果我必须继续为将要加载的每个图像启动会话,则计划将失败。我甚至不确定从哪里开始在PHP中处理这种类型的东西,或者甚至可能。我不一定需要设计/框架的帮助,我需要帮助和想法,我将如何为每个请求提供服务。

即使在PHP中不可能并且因为每个人都知道我的计划,我也想要一些关于为什么这会或不会是个好主意的建议。最后,我可能会尝试在Node.JS中进行此操作,我相信这对处理没有问题 这类事。这是我想尝试的其中一项,但不知道我是否会增加任何增加负载的速度。

1 个答案:

答案 0 :(得分:0)

原始图像数据有多大。如果它很大,你所做的只是交换CPU占用的内存使用量。

此外,您可能需要担心PHP,在32位平台上每个请求最多只能使用1.5Gb的内存。 (除非他们已在新版本中修复它。)

因此,这将限制您可以在文件中缓存的图像数量。所以我不认为这样做是个好主意。

随着硬盘速度的增加和每千兆字节的成本如此之低,缓存它的原因是什么?