【问题标题】:Apache server cache imagesApache 服务器缓存图像
【发布时间】:2009-11-29 22:49:28
【问题描述】:

在我的 Apache 服务器上,我有一个 PHP 服务,它可以获取请求并从中生成图像。我想要做的是在生成后将生成的图像缓存在我的服务器(而不是客户端的浏览器)上,所以如果已经生成了具有特定参数的图像并且有人请求它,我的 Web 服务器将返回缓存的图像而不是生成新的。

我知道我可以手动将生成的图像存储在服务器上,并在每次请求时检查它们是否存在,然后运行 ​​cron 任务以删除过期的图像,但我正在寻找更有效的方法。

谢谢。

【问题讨论】:

    标签: php apache image caching memcached


    【解决方案1】:

    您已经提到了最有效的方法。将其存储在磁盘上。您可以使用 memcache 之类的东西,将其存储在 memcache 中,然后让 memcache 在一定时间后自动使记录过期。

    【讨论】:

    • @nigative,我建议仔细阅读有关 memcached 的文档并进行一些测试,因为默认情况下最大对象大小为 1MB,这可能比您的图像小。 dev.mysql.com/doc/refman/5.0/en/ha-memcached-faq.html
    • 那么在这种情况下我还需要处理我的 php 代码中的所有内容吗?从请求字符串生成一个key,检查memcache中是否有这个key的记录,如果有则返回,否则生成一个新的图像,key并存入memcache?
    【解决方案2】:

    如您所说,将其存储在磁盘上并读回给客户端。 您可以拥有 ID.ext 和 ID.date,其中 ID.date 包含过期日期(以 unix 时间表示)。 然后只需将 ID.date 中的内容与 time() 中的内容进行比较,如果 time() 大于 ID.date 中的内容,则删除这两个文件并重新生成图像。

    【讨论】:

    • ID.date 不是必需的,只需 stat() 文件即可获取它的创建日期。
    【解决方案3】:

    根据您生成图像的方式,您也许可以使用mod_cache 为您进行缓存。

    【讨论】:

    • 看起来 mod_expires 在浏览器(HTTP Header)中缓存页面,而不是在服务器上。
    • 哦,哎呀。想到一件事,输入/链接另一件事。实际上是为了建议 mod_cache,将编辑。
    猜你喜欢
    • 1970-01-01
    • 2014-05-12
    • 2023-04-08
    • 2023-03-31
    • 2014-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多