2010-10-27 45 views
0

在代碼中,我的問題是:緩存和php:服務生成靜態文件,以加快請求

if(file_exists(c/ $requesturl) 
serve(c/ $requesturl) 
else 
serve(index.php?blah) 

在人類形態:

我的腳本生成CSS。這是非常密集的,所以我建立了緩存。

人要求: http://domain.com/css/1lfi4wg.css2

這是改寫:

RewriteRule ^([a-zA-Z0-9\-]*)\.css$ index.php?cssfilename=$1&generate 

這工作。上述被訪問後,會生成一個求CacheFile,這也適用:

的http:// domain.com/css /C/ 1lfi4wg.css2

現在我想爲生成的文件(/ c/*)作爲原始請求。我現在在php文件本身做這個,但我想用htaccess做這個更快。

我現在有這不工作:

RewriteCond %{DOCUMENT_ROOT}/c/%{REQUEST_FILENAME} -f 
RewriteRule ^(.*)\.css$ %{DOCUMENT_ROOT}/c/$1.css [L] 
+0

什麼是你的緩存CSS文件的政策?瞭解這一點對於理解如何實施緩存至關重要。您需要返回幾個步驟並查看文件的生成位置--mod_rewrite可能與解決方案無關。 – symcbean 2010-10-29 14:09:45

回答

0

REQUEST_FILENAME已經是一個絕對的文件系統路徑。嘗試在REQUEST_URIRewriteRule模式,而不是匹配的字符串URI路徑或:

RewriteCond %{DOCUMENT_ROOT}/c%{REQUEST_URI} -f 
RewriteRule ^.*\.css$ %{DOCUMENT_ROOT}/c%{REQUEST_URI} [L] 
# OR 
RewriteCond %{DOCUMENT_ROOT}/c/$0 -f 
RewriteRule ^.*\.css$ %{DOCUMENT_ROOT}/c/$0 [L]