796 Unstar Star 2.5K Fork 1.2K

Discuz! / DiscuzX

只看大图找不到关闭的地方,游客访问会被缓存,,然后二次访问都是大图模式,游客未登录点击帖子模式切换无效

Open
小樱  Opened this issue

只看大图找不到关闭的地方,游客访问会被缓存,,然后二次访问都是大图模式,游客未登录点击帖子模式切换无效

73465 cc12655 admin 1578916332 1773794 laozhoubuluo 1594507411 total 2 participants

Comments (10)

73465 cc12655 admin 1578916332
小樱 2020-02-20 01:56

如果没有地方能关闭,能否从PHP代码中删除关闭,不是模板!模板的话,,可能被搜索引擎爬了导致同样的缓存问题
看url参数是&page=1和&from=album的区别,就是让&from=album,访问&from=album也是显示为帖子模式
包括倒序显示也会影响体验?
所以能从代码对游客关闭显示并且游客关闭这2功能最好了

补充,刚在网上搜索半天找不到任何方案,,大概可能这是唯一一个关联的帖子?
然后他注册居然要收费2元!!!所以来这请求大佬帮助了。
https://www.itsvse.com/thread-7186-1-1.html

73465 cc12655 admin 1578916332
小樱 2020-02-20 02:06

@老周部落 先圈一个大佬,话说3.5有计划了吗,到时候记得说明下3.1 3.2等老版本该如何升级到3.5嗯

73465 cc12655 admin 1578916332
小樱 2020-02-20 06:22

临时解决方法,换个思路,,使用url 302重写来解决
匹配:forum.php?mod=viewthread&tid=([0-9]+)&from=album$

url 302重写跳转
thread-$1-1-1.html$

测试:http://bbs.itzmx.com/forum.php?mod=viewthread&tid=94862&from=album
视乎也完美!
这样php就收不到&from=album请求了,自然也不会输出大图模式

1773794 laozhoubuluo 1594507411
老周部落 2020-02-20 12:00

https://gitee.com/ComsenzDiscuz/DiscuzX/blob/master/upload/source/module/forum/forum_viewthread.php#L36

if($_G['setting']['cachethreadlife'] && $_G['forum']['threadcaches'] && !$_G['uid'] && $page == 1 && !$_G['forum']['special'] && empty($_GET['do']) && !defined('IN_ARCHIVER') && !defined('IN_MOBILE')) {

改为

if($_G['setting']['cachethreadlife'] && $_G['forum']['threadcaches'] && !$_G['uid'] && $page == 1 && !$_G['forum']['special'] && empty($_GET['do']) && empty($_GET['from']) && !defined('IN_ARCHIVER') && !defined('IN_MOBILE')) {

随后后台刷新一下缓存、清空一下data/threadcache,随后试试您所反馈的问题是否能解决。

1773794 laozhoubuluo 1594507411
老周部落 2020-02-20 12:01

@小樱 X3.5版本目前正在开发中,目前的新功能和最低环境要求请参见v3.5分支的readme文档。
对于X3.4以下的版本,我们建议是先升级到X3.4后再升级到X3.5。

73465 cc12655 admin 1578916332
小樱 2020-02-20 21:28

修改后,测试from=album页面不会被页面缓存,可以正常切换帖子模式,有没有直接关闭这个大图模式的办法,而不是让它不缓存大图模式
这个关闭缓存修复逻辑不对。。就算要从缓存下手也应该是做到2份缓存分开而不是关闭一份。
@老周部落 所以还是从php关闭这功能来吧。源码里昨天看了半天搜索=album关键词也没找到相关的地方,麻烦研究下啦

1773794 laozhoubuluo 1594507411
老周部落 2020-02-20 22:01

@cc12655_admin

  1. 帖子缓存功能设计就是缓存帖子首页,帖子后续页面(page > 1)以及特殊贴、Archiver、手机版、do等等的特殊页面设计就是不缓存的。这个from=album页面被缓存是因为代码没考虑到这个情况,因此这个现象按Bug处理是没问题的。
  2. 这功能确实没设计开关,在DxGit Forker群里讨论了一下,决定增加一个开关。麻烦您测试一下以下修改是否有问题,是否可以实现此功能。https://gitee.com/laozhoubuluo/DiscuzX/commit/1f14aed85803e4efeee8d398a6a156cd0c55fabc
73465 cc12655 admin 1578916332
小樱 2020-02-21 02:55

测试非常好使啦,顺带问一下,关闭大图模式的时候,这个缓存是不是应该开启呢?
因为已经不需要考虑大图模式了,如果这逻辑对的话,代码是否还考虑还要加下判断是否当前已关闭,然后删除&& empty($_GET['from'])这一段吗?
输入图片说明

1773794 laozhoubuluo 1594507411
老周部落 2020-02-21 08:05

@cc12655_admin 这个没必要。from还有其他类型的页面,一样是不能缓存的。

73465 cc12655 admin 1578916332
小樱 2020-02-21 08:18

@老周部落 哦,好的

Sign in to comment

Assignees
Labels
Not set
Projects
Milestones
Branches
Planed to start
Not set
Planed to end
Not set
Top level
Priority
PHP
1
https://gitee.com/ComsenzDiscuz/DiscuzX.git
git@gitee.com:ComsenzDiscuz/DiscuzX.git
ComsenzDiscuz
DiscuzX
DiscuzX

Search

132457 8cb2edc1 1899542 131848 70c8d3a4 1899542