立即注册 登录
彼岸网 返回首页

牛肉炖土豆的个人空间 http://www.bian-wang.com/discuz/?10744 [收藏] [复制] [分享] [RSS]

日志

遇到远程附件的真实地址问题

热度 1已有 676 次阅读2017-12-28 11:31 AM |个人分类:建站笔记


启用远程图片的理由是因为两个原因,
1.分离主服务器的存储空间
2.分离主服务器的流量
现在是因为这个流量的问题,远程OSS流量是收费的,所以比较在意,
观察了几天,同样大小的附件,也就200K,图片和MP4,访问次数差不多,
但是非图片的附件如mp4,mp3(用video标签显示的),流量暴增,是图片的30多倍!然后找原因,排除了盗链,因为OSS已经做了防盗链
结果发现是DZ的问题,图片远程地址是绝对地址,它可以被用户的浏览器缓存,所以流量小
但是其他附件是访问一次请求一次,它好像是动态的请求,
也就是说每次访问附件都要请求一次远程服务器,导致流量暴增。
非图片的附件URL是这种形式的
https://www.abc.com/forum.php?mod=attachment&aid=ND2J3K4JJ4JF5JGGFGFOERIJREWJIF233N4N34AN44%FR%GFG5%34KJ&request=yes&_f=.mp4

上图中的《隐藏远程附件真实路径:否》这个对非图片的附件不起作用,这个若能显示真实的远程附件地址就能解决我的问题!
看了下是在\source\function\function_discuzcode.php里定义的
return $_G['siteurl'].'forum.php?mod=attachment&aid='.aidencode($aid, $ext, $ignoretid ? '' : $_G['tid']).($ext ? '&request=yes&_f=.'.$ext : '');

把这句替换成
return $_G['setting']['ftp']['attachurl'].'forum/'.$attach['attachment'];
后,文件名这个$attach['attachment']又不起作用。。。

PS:经过天香公主的指导,目前从列表页进入内容页也不再重新请求远程附件了,而是直接调用的浏览器缓存。


路过

鸡蛋

鲜花

握手

雷人

发表评论 评论 (19 个评论)

回复 牛肉炖土豆 2018-1-17 02:21 AM
天香公主:    我没用过Amazon S3,在Discuz里文件上传后先存在了服务器上,然后如果使用远程空间的话,再将文件ftp到远程空间。这后面这部分估计要用AWS SDK for PHP替 ...
谢谢,我再研究研究看看。
回复 天香公主 2018-1-16 03:20 PM
牛肉炖土豆: 天香老师好,
最近在研究disczu远程附件,上传到亚马逊的Amazon S3的问题,
Amazon S3这个东西之前没用过,网上中文教程也少之又少,想问的是它和discuz的上传远 ...
   我没用过Amazon S3,在Discuz里文件上传后先存在了服务器上,然后如果使用远程空间的话,再将文件ftp到远程空间。这后面这部分估计要用AWS SDK for PHP替换,参见 https://docs.aws.amazon.com/AmazonS3/latest/dev/UploadObjSingleOpPHP.html
回复 牛肉炖土豆 2018-1-16 06:07 AM
天香公主: 不知这个改动有没有解决你前面说的访问一次请求一次的问题。如果没有的话,也许可以试试在远程空间里的.htaccess 文件里对视频文件加个缓存设置,参见 https://g ...
天香老师好,
最近在研究disczu远程附件,上传到亚马逊的Amazon S3的问题,
Amazon S3这个东西之前没用过,网上中文教程也少之又少,想问的是它和discuz的上传远程附件功能整合是一个什么样的思路呢?

Amazon S3是对象存储类型,而不是服务器,它应该不存在ftp接口?
要在服务器做ftp接口吗?
回复 牛肉炖土豆 2018-1-16 06:07 AM
天香公主: 不知这个改动有没有解决你前面说的访问一次请求一次的问题。如果没有的话,也许可以试试在远程空间里的.htaccess 文件里对视频文件加个缓存设置,参见 https://g ...
天香老师好,
最近在研究disczu远程附件,上传到亚马逊的Amazon S3的问题,
Amazon S3这个东西之前没用过,网上中文教程也少之又少,想问的是它和discuz的上传远程附件功能整合是一个什么样的思路呢?

Amazon S3是对象存储类型,而不是服务器,它应该不存在ftp接口?
要在服务器做ftp接口吗?
回复 牛肉炖土豆 2017-12-28 11:59 PM
天香公主: 不知这个改动有没有解决你前面说的访问一次请求一次的问题。如果没有的话,也许可以试试在远程空间里的.htaccess 文件里对视频文件加个缓存设置,参见 https://g ...
哇,谢谢,我再好好研究研究这个,

PS:经研究,这个果然有学问,涉及到主服务器,远程服务器,CDN的HTTP头的设置,继续研究。
回复 天香公主 2017-12-28 11:48 PM
不知这个改动有没有解决你前面说的访问一次请求一次的问题。如果没有的话,也许可以试试在远程空间里的.htaccess 文件里对视频文件加个缓存设置,参见 https://gtmetrix.com/add-expires-headers.html
回复 天香公主 2017-12-28 11:21 PM
牛肉炖土豆:    原来如此,是我看错了,不好意思!嘿嘿,谢谢,解决咯我的问题,高兴
  
回复 牛肉炖土豆 2017-12-28 11:20 PM
天香公主: 哦,明白了。你用的那句话在function_attachment.php里,我用的那句话在forum_attachment.php里
   原来如此,是我看错了,不好意思!嘿嘿,谢谢,解决咯我的问题,高兴
回复 天香公主 2017-12-28 11:18 PM
牛肉炖土豆: discuz x3.4 20171001版本源代码
        if(!$path) {
                if($attach = C::t('forum_attachment_n')->fetch('aid:'.$aid, $aid, array(1, -1))) {
                        if($attach['remot ...
哦,明白了。你用的那句话在function_attachment.php里,我用的那句话在forum_attachment.php里
回复 牛肉炖土豆 2017-12-28 11:14 PM
天香公主: 奇怪,至少在我下载的简体中文UTF8版里没有它。你要高兴的话,查下下载的文件包里的文件里有没有它
我就是下载的源文件解压出来的,我马上再重新解压看看,
回复 天香公主 2017-12-28 11:12 PM
牛肉炖土豆: 原版就有array(1, -1),奇了怪了,我刚才替换了老师给的代码,竟然显示出了真实地址! ,真神奇,谢谢
奇怪,至少在我下载的简体中文UTF8版里没有它。你要高兴的话,查下下载的文件包里的文件里有没有它
回复 牛肉炖土豆 2017-12-28 11:12 PM
看了下source\function\function_post.php里面也是带这个的,为何和您的不一样呢?
$attach = C::t('forum_attachment_n')->fetch('aid:'.$aid, $aid, array(1, -1));
回复 牛肉炖土豆 2017-12-28 11:08 PM
discuz x3.4 20171001版本源代码
        if(!$path) {
                if($attach = C::t('forum_attachment_n')->fetch('aid:'.$aid, $aid, array(1, -1))) {
                        if($attach['remote']) {
                                $filename = $_G['setting']['ftp']['attachurl'].'forum/'.$attach['attachment'];
                        } else {
                                $filename = $_G['setting']['attachdir'].'forum/'.$attach['attachment'];
                        }
                }
回复 牛肉炖土豆 2017-12-28 11:06 PM
天香公主: 那我俩用的是同一个版本,那array(1, -1)是你自己加的,还是Discuz代码里就是这么用的?
原版就有array(1, -1),不是我自己加的,奇了怪了,我刚才替换了老师给的代码,竟然显示出了真实地址! ,真神奇,谢谢
回复 天香公主 2017-12-28 11:03 PM
牛肉炖土豆: discuz x3.4 20171001版。10月01日版本,刚又看了3.4的0820版也是我的这个,怎么和你的不一样?
那我俩用的是同一个版本,那array(1, -1)是你自己加的,还是Discuz代码里就是这么用的?
回复 牛肉炖土豆 2017-12-28 10:59 PM
天香公主: 你用的是哪个版本的代码?我在DiscuzX3.4里看到是
    $attach = C::t('forum_attachment_n')->fetch('aid:'.$aid, $aid);
如果也不工作的话,就要检查下有关变 ...
discuz x3.4 20171001版。10月01日版本,刚又看了3.4的0820版也是我的这个,怎么和你的不一样?
回复 天香公主 2017-12-28 10:54 PM
牛肉炖土豆: 是的,在parseattachurl里,我把forum_attachment.php里的这句
$attach = C::t('forum_attachment_n')->fetch('aid:'.$aid, $aid, array(1, -1))
复制过来也不行 ...
你用的是哪个版本的代码?我在DiscuzX3.4里看到是
    $attach = C::t('forum_attachment_n')->fetch('aid:'.$aid, $aid);
如果也不工作的话,就要检查下有关变量$aid和$attach的值了。最好能debug,不然想法把他们输出来到浏览器里看看。
回复 牛肉炖土豆 2017-12-28 10:27 PM
天香公主: 关于你最后那段,是在函数parseattachurl里吧?那里只有$aid,还没有定义$attach,估计要借鉴下forum_attachment.php,看看是如何从$aid得到$attach的 ...
是的,在parseattachurl里,我把forum_attachment.php里的这句
$attach = C::t('forum_attachment_n')->fetch('aid:'.$aid, $aid, array(1, -1))
复制过来也不行
回复 天香公主 2017-12-28 10:11 PM
关于你最后那段,是在函数parseattachurl里吧?那里只有$aid,还没有定义$attach,估计要借鉴下forum_attachment.php,看看是如何从$aid得到$attach的

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 立即注册

小黑屋|Archiver|彼岸网  

Powered by Discuz! X3.1 © 2001-2014 Comsenz Inc.
GMT-4, 2018-8-20 01:08 PM , Processed in 0.055019 second(s), 8 queries. ,ApcOn

返回顶部