zoukankan      html  css  js  c++  java
  • 请求伪静态处理

    最近一个项目中的页面是通过请求传递参数动态生成的,但是短时间内针对所有用户的相同请求,生成的页面是一样的。考虑到面向用户的服务器都开启了squid缓存,因此决定对请求做一个伪静态处理,使squid缓存生效,以提高性能。

     

    目前公司的线上服务器是Nginx的,我内网本地装的是Apache,测试服务器上是Nginx,因此对于这两种服务器,都进行了处理。

     

    先说一下Apache。Apache的伪静态既可以在配置文件中进行设置,也可以通过.htaccess文件配置,我是选择的后者。伪静态其实就是rewrite,因此需要先开启rewrite模块,即:

    LoadModule rewrite_module modules/mod_rewrite.so
     
    然后因为要使用到.htaccess,还需在虚拟主机中设置:
    AllowOverride All
     
    然后在请求入口位置的.htaccess中按正则匹配进行伪静态参数设置:
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} -s [OR]
    RewriteCond %{REQUEST_FILENAME} -l [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^.*$ - [NC,L]
    RewriteRule ^index/content/([\w]+)/([^/]+).html$/news/index/content/?uid=$1&title=$2 [NC,L]
    RewriteRule ^.*$ index.php [NC,L]
     
    其他内容都和平时没什么差别,关键就在着色这一句,红色部分为真实请求的匹配,蓝色部分为参数映射,其中红色部分的每一个小括号对应蓝色部分的一个参数变量,参数变量以$符号标识,按数字递增。
    比如上面的([\w]+)对应的就是$1,([^/]+)对应$2,以此类推。
    假如一个请求为http://zx.10jqka.com.cn/news/index/content/param1/param2.html,经过上面的处理后,就会变成http://zx.10jqka.com.cn/news/index/content/?uid=param1&title=param2。
     
    再来看看Nginx。
    location / {
    rewrite ^/news/index/content/([\w]+)/([^/]+).html$/news/index/content/?uid=$1&title=$2last;
                    index  index.php index.html index.htm;
                    if (!-e $request_filename) {
                            rewrite ^/(\w+)/(.*)$ /$1/index.php last;
                    }
            }
     
    Nginx其实和Apache的配置类似,这里就简单说一下区别:
    1.标识名:Apache是ReWriteRule,Nginx是rewrite
    2.Apache的路径是以.htaccess为基准,且不能在开头加上斜杠(/);Nginx的路径是以虚拟主机为基准,开头必须加上斜杠。
    3.尾标签不同
    4.Nginx是直接写在配置文件中,Apache既可写在配置文件中,也可以写在.htaccess文件中
  • 相关阅读:
    python 基础2.5 循环中continue与breake用法
    python 基础 2.4 while 循环
    python 基础 2.3 for 循环
    python 基础 2.2 if流程控制(二)
    python 基础 2.1 if 流程控制(一)
    python 基础 1.6 python 帮助信息及数据类型间相互转换
    python 基础 1.5 python数据类型(四)--字典常用方法示例
    Tornado Web 框架
    LinkCode 第k个排列
    LeetCode 46. Permutations
  • 原文地址:https://www.cnblogs.com/zhouchangju/p/2845583.html
Copyright © 2011-2022 走看看