2011-12-12 49 views
2

我正在將我的網站頁面緩存到靜態平面文件緩存中,並試圖使用try_files指令從緩存中首先加載文件(如果存在),然後轉到Web應用程序。

基本上,我試圖做這樣的事情:

try_files $uri $uri/ /var/www/vhosts/example.com/httpdocs/staticfilecache/$uri/index.html 

在這個例子中,如果用戶請求example.com/products/它會嘗試staticfilecache /產品/ index.html的我的問題是, $ uri已經包含一個尾部斜線。試圖在$ uriindex.html中使用它會產生一個錯誤。

是否有任何高性能/簡單的方法總是剝離/但不重寫瀏覽器中的地址?

回答

2

你試圖做的事情在許多層面上都有許多問題。

  1. 「/ var/www/vhosts/$ uri」無效。除非您在「staticfilecache」文件夾下複製了 您的整個文檔根目錄。
  2. Nginx擁有自己的緩存系統,只要安裝完成,它將首先自行檢查它,而不需要任何干預。
  3. 只要索引指令已設置,Nginx就會自行檢查索引文件。
  4. 您的代碼實際上是試圖檢查最後一個staticcache,並且不是像您所說的那樣首先檢查。
  5. 在磁盤上創建靜態文件緩存毫無意義。 Nginx可以從 以及它們的原始位置讀取靜態文件。
  6. 無論如何,Nginx會自行爲需要緩存的項目創建緩存,通常爲動態文件。這不是手動工作。

基本上,它看起來像你有點在一些網絡服務器基本面的錯誤軌道上。

0

答案(嚴格)你的問題是,

rewrite ^(.*)/$ $1 break; 

但我建議你不這樣做,並經過@黃子華的回答。

對於一些有趣的緩存指導,你可以檢查this out