当前位置:首页 > 日记本 > 正文内容

配置CDN/全站加速支持手机和PC端的不同访问

zhangchap2年前 (2021-12-28)日记本372

未开启cdn/全站加速之前,网站区分pc/m 访问是通过Nginx识别ua实现跳转。

开启后,由于html静态页面缓存到cdn服务商的服务器上,不再请求源服务器,导致部分页面跳转出现问题

  1. 不跳转,m端访问pc页面,不自动跳转自m页面

    解决方案:在页面上加入js跳转

    <script type="text/javascript">
        if(/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) ) {
            window.location = "https://m.huanghepiao.com/event/29669/";
        }
    </script>

部分页面出现的后遗症:死循环 pc ->m ->pc .....

原因不明

显然不是完美解决方案

通过查文档,正好查到一个之前问过的问题,cdn缓存页面如何识别ua


2.  通过在网站配置加入标识头解决 :配置CDN支持手机和PC端的不同访问


以下下是阿里云的文档:

本文概述CDN配置后支持手机和PC端的分别访问
需要设置CDN对不同的UA做不同的缓存,实现手机访问网站跳转到Wap页面,PC端访问跳转到PC端的页面
因为通过UserAgent头识别用户的客户端,然后返回不同的内容给不同的UA用户。但是CDN缓存并不会区分UA,只会区分URL,所以相同URL缓存的内容是一致的,无论UA是什么样
CDN是支持对不同的UA,设置不同的缓存,这个是根据vary头来控制的。vary头里面的字段一般是头信息的字段,表示CDN会检测这个头信息。如果内容不一致就缓存不同的内容,命中时也一样,必须头信息一致才会缓存。这个vary头需要在源站添加。在Nginx中增加如下信息。
add_header Vary "Accept-Encoding, User-Agent";

 

具体配置如下:

图片.png

不知道加的位置合适不合适,去掉js跳转代码后,不再出现死循环情况

分享给朋友:

相关文章

lxml win 安装方法

文档地址:https://lxml.de/installation.htmlwindows 下安装不了的都可以在这里找:https://www.lfd.uci.edu/~gohl...

宝塔重启服务器后,Redis就启动不了解决方案

宝塔重启服务器后,Redis就启动不了解决方案

1.更改权限 chown -R redis.redis /www/server/redis/ 2.设置持久化...

Nginx+PHP,PHP如何优化配置?

具体修改FPM配置文件参数: 若你的php日志出现: WARNING: [pool www] seems busy (you may need to increase pm.sta...

python jieba分词

import jieba from jieba.analyse import tfidf words = jieba.lcut('...

python 发布文章 随机分类(choice)

from random import choice catid = choice([5,6]) #choice 函数从列表中随机提取...

python 获取当前时间及随机时间戳

import time from random import randint time.strftime('%Y-%m-%d %H:%M:...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。