【问题标题】:Using mod_rewrite to view cached version from usual URL使用 mod_rewrite 从通常的 URL 查看缓存的版本
【发布时间】:2011-04-10 23:40:23
【问题描述】:

我的 PHP 站点生成动态 db 驱动代码的静态 html 版本,并将它们存储在一个名为 cache 的文件夹中。

这意味着当您访问 /about-us/ 时,请求会通过 index.php?page=about-us 进行路由,并生成一个名为 /cache/about-us.html 的文件。

如果该文件存在,PHP 会包含它,然后退出。这似乎是在浪费时间,为什么不在请求 /about-us/ 时让 apache 提供 /cache/about-us.html,但前提是它存在。

到目前为止,我目前的 mod_rewrite 部分只包括这个:

RewriteRule ^([A-Za-z0-9-_/\.]+)\/$ /?page=$1 [L]

它将任何 /foo_bar/ 请求写入 index.php?page=foo_bar。如果缓存版本存在,我可以在此之前放置什么来请求我的缓存版本?

【问题讨论】:

    标签: caching mod-rewrite


    【解决方案1】:

    首先将所有内容发送到 /cache/ 文件夹

    RewriteRule ^([A-Za-z0-9-_/\.]+)/$ /cache/$1
    

    然后,检查是否找不到,然后重新路由

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^/cache/([A-Za-z0-9-_/\.]+)$ /page?=$1 [L]
    

    根据服务器的设置方式,您可能需要稍微更改路径(我建议使用绝对路径)。另请注意,这也适用于与 RewriteRule 匹配的图像

    我不确定您是否会看到任何显着的性能提升 - 仅包含静态文件不会花费那么长时间(如果您不访问数据库)。此外,如果您有APC,您可以将文件缓存在内存中。

    【讨论】:

    • 谢谢!这是我无法解决的中间线。有人建议我如何测量每秒的连接数或其他一些措施以确定这是否值得做?
    猜你喜欢
    • 1970-01-01
    • 2017-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-26
    • 2021-03-30
    相关资源
    最近更新 更多