2011-12-12 50 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