网站迁移后遇到的一些奇奇怪怪的问题

1.视频加载失败  清理浏览器缓存

大概是浏览器把视频缓存过一遍后就无法再加载视频了

我的视频是通过cloudreve 挂载在OneDrive上的

通过cloudreve获取的外链,问题是该链接用浏览器访问时会直接下载而不是预览,不论是什么文件,尝试过很多方法,但都没有用,只能认为是OneDrive导致的强制下载

在html上使用外链倒是比较正常,图片可用,视频就会出现上述问题

现在尝试解决

在宝塔中修改nginx配置文件,使一些常见视频格式文件缓存时间为3分钟

mp4|avi|mov|mkv|flv|wmv|webm

server 块中添加或修改对应的视频文件缓存设置

添加

location ~ .*\.(mp4|avi|mov|mkv|flv|wmv|webm)$
{
add_header Cache-Control “public, max-age=180” always;
expires 3m;

具体是否有效还需要一段时间的检测

好像没用

又试了下,在cloud flare 缓存 配置 把浏览器ttl改成2分钟,貌似就好了

还是不行,偶尔视频依旧无法加载
现在在cloudfare上添加缓存规则

设置一些常用文件不缓存,再试试效果
又失败了

猜测是浏览器阻止了跨域请求,再试试这个

修改网站根目录下的.htaccess
改成
# BEGIN CORS

# 允许所有来源访问常见的视频文件
<FilesMatch “\.(mp4|webm|ogg|avi|mov|wmv|flv|mkv|3gp|mpeg|ts)$”>
Header set Access-Control-Allow-Origin “*”
Header set Access-Control-Allow-Methods “GET, POST, OPTIONS”
Header set Access-Control-Allow-Headers “Origin, X-Requested-With, Content-Type, Accept”

# END CORS

# BEGIN WordPress

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

# END WordPress
允许视频文件跨域,再试试
又失败了

而且又发现一段时间后图片也无法显示了

在结合下面的问题貌似是cloudflare代理不能开
只能关闭代理试试了
又想了想也有可能是缓存有上限,到一定值就不再缓存了
再找找办法
好像还是不对,浏览器返回错误 net::ERR_BLOCKED_BY_ORB
还是跨域的问题
现在的解决方法是在视频文件的来源服务器修改nginx配置文件,使其允许资源跨域访问
在nginx配置文件中的server块中添加代码
location /path/to/video/ {
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods ‘GET, POST, OPTIONS’;
add_header Access-Control-Allow-Headers ‘Origin, X-Requested-With, Content-Type, Accept, Authorization’;
}
这么改再试试
不对,都不对,和代理也没关系
问题出在onedrive对于直链的授权,
时间一长就无法访问而且cloudreve也无法访问文件 只有重新上传,网页端ondrive倒是可以下载
现在在Azure Active Directory 控制台这是加两个权限
在cloudreve上改了一下配置
这种方法也没用

又在本地上传了视频文件,试试用本地的文件url会怎么样
本地文件没问题

有一个假说就是,我除了这个视频,网站上其他的图片都挂在OneDrive上,但基本没出现过问题,有可能是onedrive对于直链文件大小有限制(没有验证)

新发现
修改onedrive分享链接使其变成直链的办法,可以解决图片,视频无法预览直接下载的问题

将 https://37sdfr-my.sharepoint.com/:v:/g/personal/onedrive_37sdfr_onmicrosoft_com/ERh5HP9R3FJEgzzuEZGdV6gBKBbzL0WEeAGuYKX7fL-g5w?nav=xxx&e=xxx
修改为 https://37sdfr-my.sharepoint.com/:v:/g/personal/onedrive_37sdfr_onmicrosoft_com/ERh5HP9R3FJEgzzuEZGdV6gBKBbzL0WEeAGuYKX7fL-g5w?download=1

通过onedrive生成的分享链接修改成直链后依旧可以使用
而通过cloudreve生成的中转直链显示过期无法使用
那么问题是出在了cloudreve的中转链接

在cloudreve管理面板 用户组 关闭使用重定向的外链试试
虽然暂时可以用,但我估计一段时间后就过期了

既然可以直接用onedrive生成直链,cloudreve可以舍弃了吧?

现在已经把cloud flare的代理打开了
nginx的修改删掉了,我估计关于跨域的修改应该没什么影响就没动。

再等一段时间,基本可以确定是cloudreve中转的问题

到现在还没有出现问题,3个小时了

根据时间戳 1738140827

推算是授权时间到2025年1月29日 08:53:47

应该是OneDrive对cloudreve的授权url有效期

现在有一个假说,这个有效期取决于OneDrive端文件有没有开启共享

没有的话就以这个授权时间为准,有开启共享的话就以OneDrive为准

另一种情况就是该链接和ondrive端的共享情况无关,就看到时间后的情况了

不用cloudreve的话,

就可以省下一个服务器和域名了

20:30了,视频依旧可以加载,如果明天依旧可以加载的话,就确定确定是cloudreve中转的问题,并且假说————有效期取决于OneDrive端文件有没有开启共享

没有的话就以这个授权时间为准,有开启共享的话就以OneDrive为准 成立了一半
昨晚我又创建了一个在onedrive上没有开启共享的用cloudreve生成的无中转直链用来做对照,第二天发现链接全部失效,但不知道为什么pc端还可以加载视频,缓存都清理了,手机端却不行

总结:onedrive分享和cloudreve分享链接相互独立
解决方法,
1.用onedrive的分享链接改成直链 可以
2.cloudreve自己的分享链改成直链 失败

结论 1.cloudreve的 管理面板 用户组 关闭使用重定向的外链 否则一段时间内后在cloudreve里文件也无法访问(大概)
2.改用onedrive的分享链接并改成直链 ?h后面改成download=1
3.计划弃用cloudreve
4.onedriive直链直接下载的原因,浏览器无法直接预览文件的格式(mkv文件就直接下载,换成MP4就可以预览了)
5.计划性的更换网站url

2.cloudflare 域名无法开启代理 一开就出现图片无法加载部分页面无法访问等问题(页眉图片不显示,外观自定义右侧空白打不开)

改成严格模式再开代理(已确认)

3.又遇到一个问题,当一个页面同时加载两个视频时(标签页占用内存在400mb左右时),浏览器会提示链接不安全,减少内存占用就可以了

 

 

 

 

订阅评论
提醒
0 评论
最旧
最新 最多投票
内联反馈
查看所有评论