#独家
pc端和移动端 采用同一个页面,缓存后,如何共存?

2023-05-08 0 3,222

宝塔后台,nginx+php+mysql
pc端域名 www.sf.com 和 手机端域名 m.sf.com 绑定在同一个目录下;
页面伪静态,为了实现双端访问效果,采用php函数 判断http_host是否是字母’m’开头,调用对应css并修改相应url的http_host。
函数如下:

function m_url($str){
    $http_host = htmlentities($_SERVER['HTTP_HOST'], ENT_QUOTES, 'UTF-8');
    $is_shouji = substr($http_host, 0, 1) === 'm';
    if($is_shouji == "m"){
        $m_url = preg_replace('/^(https?:)?(\/\/)(?!m)(.*)$/i', '$1$2m$3', $str);
    }else{
        $m_url = $str;
    }
    return $m_url;
}

http_host = m.sf.com 时插入m.css,用m_url替换所有A链接;
伪静态下,一切正常,开启缓存后就不行了。
—【缓存后,无法执行函数,链接全部显示成pc地址了】

请问,有什么好的方案?

不同域名返回同一个 index.html。

在 head 部分使用 js 判断域名,根据不同域名给 body 标签添加不同 class。

在 CSS 文件中根据 body 的 className 分别应用不同规则。

Nginx 配置一下:

http {
    ...
    proxy_cache_path /path/to/your/cache/pc levels=1:2 keys_zone=pc_cache:10m;
    proxy_cache_path /path/to/your/cache/mobile levels=1:2 keys_zone=mobile_cache:10m;
    ...
}

server {
    ...
    location / {
        ...
        if ($http_host ~* ^m\.sf\.com$) {
            proxy_cache mobile_cache;
        }
        if ($http_host ~* ^www\.sf\.com$) {
            proxy_cache pc_cache;
        }
        ...
    }
}

php:

// 修改你的缓存键生成函数
function generate_cache_key() {
    $http_host = htmlentities($_SERVER['HTTP_HOST'], ENT_QUOTES, 'UTF-8');
    return $http_host . '_' . $other_variables;
}
收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

1. JK下载官网所有资源来源于开发团队,加入会员即可下载使用!如有问题请联系右下角在线客服!
2. JK下载官方保障所有软件都通过人工亲测,为每位会员用户提供安全可靠的应用软件、游戏资源下载及程序开发服务。
3. JK开发团队针对会员诉求,历经多年拥有现今开发成果, 每款应用程序上线前都经过人工测试无误后提供安装使用,只为会员提供安全原创的应用。
4. PC/移动端应用下载后如遇安装使用问题请联系右下角在线客服或提交工单,一对一指导解决疑难。

JK软件下载官网 技术分享 pc端和移动端 采用同一个页面,缓存后,如何共存? https://www.jkxiazai.com/1709.html

JK软件应用商店是经过官方安全认证,保障正版软件平台

相关资源

官方客服团队

为您解决烦忧 - 24小时在线 专业服务