• 请求伪静态处理


    最近一个项目中的页面是通过请求传递参数动态生成的,但是短时间内针对所有用户的相同请求,生成的页面是一样的。考虑到面向用户的服务器都开启了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文件中
  • 相关阅读:
    Linux 网络流量实时监控工具之ntopng详解
    linux wget 命令用法详解(附实例说明)
    Linux curl使用简单介绍
    数据库中随机查询数据
    【算法】验证码识别基础方法及源码(转)
    CentOS 7静默(无图形化界面)安装Oracle 11g
    史上最详细最全的Linux上安装Oracle的教程-centos7
    如何实现Docker镜像和容器实例的备份迁移
    oozie timezone时区配置
    通过hue提交oozie定时任务
  • 原文地址:https://www.cnblogs.com/zhouchangju/p/2845583.html
Copyright © 2020-2023  润新知