加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

如何通过PHP提供以前GZipped缓存的HTML文件?

发布时间:2020-12-13 22:45:17 所属栏目:PHP教程 来源:网络整理
导读:情况 我有一个为我的网站开发的缓存,其中我目前检查每个页面请求,看看是否有一个静态的缓存版本的页面,然后,如果浏览器支持,我gzip页面并将其交回浏览器. 现行守则 $hash = md5('http://mydomain.com'.$url);$fl = substr($url,1,1);if(file_exists('/home/m
情况

我有一个为我的网站开发的缓存,其中我目前检查每个页面请求,看看是否有一个静态的缓存版本的页面,然后,如果浏览器支持,我gzip页面并将其交回浏览器.

现行守则

$hash = md5('http://mydomain.com'.$url);
$fl = substr($url,1,1);
if(file_exists('/home/myaccount/public_html/cache/'.$fl.'/'.$hash.'.html') && $_GET['cache'] != 'off' && $fl!=''):
    ob_start("ob_gzhandler");
    header('Content-type: text/html; charset=utf-8');
    include 'cache/'.$fl.'/'.$hash.'.html';
elseif(file_exists('/home/myaccount/public_html/cache/'.$hash.'.html') && $_GET['cache'] != 'off'):
    ob_start("ob_gzhandler");
    header('Content-type: text/html; charset=utf-8');
    include 'cache/'.$hash.'.html';
else:
    $_SERVER['REQUEST_URI'] = str_replace('?cache=off','',$_SERVER['REQUEST_URI']);
    include 'interface/index.php'; 
endif;

期望的变化

我想更改它,以便服务器上的文件已经gzip压缩.我已经知道如何gzip文件并在服务器上设置它们.但是,我想知道如何修改脚本的这一部分,以便检查浏览器是否支持gzip,然后只需将文件的gzip版本交给他们.如果不支持,它将解压缩并将其交还给服务器.

目的

这将完成几件事.首先,它将在服务器上使用更少的空间来存储文件.其次,由于大多数浏览器都接受gzip压缩格式,因此不必在每个页面请求上对它们进行gzip,它将缩短几毫秒.相反,它只需要为少数不受支持的浏览器解压缩文件.第三,这是一个了解php如何使用gzip压缩文件的机会.

解决方法

我能够找到答案.这是对任何感兴趣的人:

$hash = md5('http://mydomain.com'.$url);
$fl = substr($url,1);
if(file_exists('/home/myaccount/public_html/cache/'.$fl.'/'.$hash.'.html.gz') && $_GET['cache'] != 'off' && $fl!=''):
    if (strstr($HTTP_SERVER_VARS['HTTP_ACCEPT_ENCODING'],"gzip")):
        header("X-Compression: gzip");
        header("Content-Encoding: gzip");
        readfile('cache/'.$fl.'/'.$hash.'.html.gz');
    else:
        $gz = gzopen ('cache/'.$fl.'/'.$hash.'.html.gz',"r");
        $contents = gzread ($gz,1000000);
        echo $contents;
    endif;
elseif(file_exists('/home/myaccount/public_html/cache/'.$hash.'.html.gz') && $_GET['cache'] != 'off'):
    if (strstr($HTTP_SERVER_VARS['HTTP_ACCEPT_ENCODING'],"gzip")):
        header("X-Compression: gzip");
        header("Content-Encoding: gzip");
        readfile('cache/'.$hash.'.html.gz');
    else:
        $gz = gzopen ('cache/'.$hash.'.html.gz',1000000);
        echo $contents;
    endif;
else:
    $_SERVER['REQUEST_URI'] = str_replace('?cache=off',$_SERVER['REQUEST_URI']);
    include 'interface/index.php'; 
endif;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读