【发布时间】:2012-03-02 19:37:42
【问题描述】:
背景
我正在通过创建静态缓存来优化一些高流量页面。由于内容不经常更改,因此生成缓存和使缓存无效的机制很简单。不过目前,我正在通过 PHP 访问缓存(基本 file_exists() 检查)。我想把它提升到 Web 服务器级别以完全删除 PHP。
规格
我将拥有数千个缓存页面。所以我设想的目录树是:
year -> first id of digit -> second id of digit -> id.html
我以这种方式拆分它是为了避免在一个目录中包含成千上万个文件 - 据我所知,这会影响性能。我熟悉 mod_rewrite,但不太清楚如何捕获 URL 的必要部分并确定文件是否存在。
以下是传入 URL 的示例:
/2011/37823/some_slug
一些伪代码,使用上面的网址:
RewriteCond %{REQUEST_URL} ^(\d{4})/...
RewriteCond /cache/$1/$3/$4/$2.html -f
RewriteRule - /cache/$1/$3/$4/$2.html [L]
问题
- 如何为上述创建
RewriteRule? - 有没有更好的方法来做到这一点(使用 LAMP 堆栈的技术)?
【问题讨论】:
-
我没用过,但依稀记得有个mod_cache。或者你已经调查过了?
-
没有,但我会的。不幸的是,我目前处于共享托管环境中。因此,即使它确实适用,我也可能无法使用它。与此同时,我确信有一种方法可以使用 mod_rewrite。
-
啊,在共享主机上,我怀疑这不是一个选择。
标签: php apache mod-rewrite