twikoojs / twikoo

💬 一个简洁、安全、免费的静态网站评论系统 | A simple, safe, free comment system.
http://twikoo.js.org
MIT License
1.4k stars 263 forks source link

当浏览器开启缓存的时候,第一次打开页面可以正常显示twikoo,但F5刷新就直接消失,需要从别的页面跳过来才能显示 #642

Closed tinsir closed 6 months ago

tinsir commented 6 months ago

只要刷新网页就不显示twikoo评论区了,是整块都不显示

nginx 反代的docker docker 有 TWIKOO_IP_HEADERS='headers.cf-connecting-ip' 参数,好像这个跟刷新无关 image

用的有cdn 这这块默认不缓存的

问题肯定是出在缓存这里了,我的目的是刷新的时候也能看到twikoo评论区

tinsir commented 6 months ago

控制台的错误请忽略

imaegoo commented 6 months ago

js顺序的问题,twikoo要放在chunk之前加载

image

image

tinsir commented 6 months ago

@imaegoo 感谢回复 研究了一下 或许和js顺序有关。我用了其它方式解决,并且我有一些不太理解 关于 CDN 镜像 https://lib.baomitu.com/twikoo/1.6.29/twikoo.all.min.js 404 为啥404? https://cdn.staticfile.org/twikoo/1.6.29/twikoo.all.min.js Cache-Control: max-age=2 为啥只给2秒?

我开始出问题是用的https://cdn.staticfile.org/twikoo/1.6.29/twikoo.all.min.js 原因也出在Cache-Control: max-age=2

切换到https://cdn.bootcdn.net/ajax/libs/twikoo/1.6.29/twikoo.all.min.js Cache-Control: max-age=31536000 就完全正常了 之前是两秒过期 现在缓存时间长了到没问题了 希望作者能把baomitu这个恢复一下 现在404用不了 这个国内外速度都挺快

imaegoo commented 6 months ago

我用了其它方式解决,并且我有一些不太理解

和 js 的加载顺序有关,和缓存无关,Cache-Control 不能解决根本问题,建议调整 js 的加载顺序,确保“声明”在“调用”之前执行。

<!-- 声明 -->
<div id="tcomment"></div>
<script src="https://cdn.staticfile.org/twikoo/1.6.29/twikoo.all.min.js"></script>
<!-- 调用 -->
<script>
twikoo.init({ ... })
</script>

声明必须在调用之前,之所以缓存之后没有出现问题,是因为<script defer ...>无法保证js的执行先后顺序,被缓存的twikoo js文件恰巧先于网站js执行了,造成了“缓存以后就正常了”的现象。

为啥404?

其中一些 CDN 可能需要数天时间同步最新版本

希望作者能把baomitu这个恢复一下 现在404用不了 这个国内外速度都挺快

CDN 并不是 twikoo 作者维护的,baomitu 由 360 维护,CDN 厂商会定时同步最新版本的 js

tinsir commented 6 months ago

好的。🙏thanks

famousprince commented 2 months ago

cdn.staticfile.org / cdn.staticfile.net / lib.baomitu.com 替换成 -> s4.zstatic.net/ajax/libs,有 CDN 加载快,同步也很及时