php添加etag,并用反向代理缓存,提高程序运行效率

admin 6月前 199

1。首先注释掉sid生成(这步可以不做,否则就要指定head缓存头)
打开根目录下的 index.inc.php
第七行 注释掉
// $sid = sess_start();
好处,提高效率,CC攻击不再有大量的sid写入,去掉了程序头中各种不缓存的head头
后果,无法生成ssid,仅靠token识别用户身份,在线人数也会不再更新,可能有的用户无法登陆

2。添加etag头
在需要的页面写入
    $Etag = $time; 
    if(array_key_exists('HTTP_IF_NONE_MATCH', $_SERVER) and $_SERVER['HTTP_IF_NONE_MATCH'] == $Etag){
        header("HTTP/1.1 304 Not Modified");
        exit();
    } else {
        header('Etag: "'. $Etag.'"');
    }
说明:以当前日期作为页面的Etag,考虑到以后需要更新,如果我们使用反向代理缓存,则无需判断只否有etag了(反向代理会操作这一步),所以源页面只需要添加一个header头,直接
header('Etag: "'. $time.'"');
也可以判断uid,只在uid为空的情况才输出
if(empty($uid)){
header('Etag: "'. $time.'"');
}
这样的好处,对于未登陆的用户,反向代理会缓存各个页面,后端压力基本为0,而且有Etag,反向代理的流量也大大减少
后果,未知

3。登陆用户跳过反向代理
set $skip_cache 0;
if ($http_cookie ~* "bbs_token") {set $skip_cache 1;}
fastcgi_no_cache $skip_cache;
fastcgi_cache_bypass $skip_cache;
说明,以cookies关键词token检测,如果包含,则不使用缓存,也不缓存页,直接操作源站

4。gzip
想所有页面都强制启用gzip
在反向代理页面中添加自定义头 
proxy_set_header Accept-Encoding 'gzip';
再在nginx配置文件中注释掉(所有页面均是gzip)
 #gzip_vary on;

最新回复 (0)
  • 游客
    2
返回