QUOTE(OnceForAll @ Jan 2 2023, 10:10)

JuicyAd 我自己也曾经注册过用过。要想看广告计数、菠萝要想有收入,首先你得加载 JuicyAd 的 JS。我和现有的三个 EhViewer 分支的开发者/开发团队都很熟悉,他们明确告诉我了,EhViewer 根本不可能加载 JuicyAd 的 JS,使用 EhViewer 确确实实会让菠萝损失这部分 JuicyAd 收入。
其次,EH 的 H@H机制,同一页图片,分配给你的 URL 在可以预见的时间内不会刷新、只有你手动点击按钮更换 URL。所以不存在重复请求的情况。而且 EH 网页端,严格限制你同一时间能看的图片数(你如果想快速看很多图片,你需要使用 Multi Page Viewer,这个功能不是免费的、并不是 EH 所有访客都能使用);反而是 EhViewer,会毫无节制和限制的请求图片。我和现有的三个 EhViewer 分支的开发者/开发团队聊过了,他们中没有任何一人在他们 end 实现了 debounce 或 throttle。
更重要的是,EhViewer 下载本子的方式就是把整个画廊所有的图片都请求一遍、因此每张图片都要请求一次 EH API;反而你在 EH 上下载本子,要么使用种子、要么使用 Archive Download,下载一个画廊只需要请求 EH API 一次、不会对 EH API 造成压力。EhViewer 这种 bypass EH Archive Download 的行为本身就是错误的。
我用一个脚本叫Manga Loader,它可以将多页在一页上显示为一长条,而它就有throttle (IMG:[
invalid]
style_emoticons/default/smile.gif)
我的意思是,阅读器完全可以做到,而且似乎也不难 (IMG:[
invalid]
style_emoticons/default/mellow.gif)
所以3个EHV团队(团队!!!)没一个实现的,是因为组员不行还是EHV摞成屎山了 (IMG:[
invalid]
style_emoticons/default/ohmy.gif)
这是Manga Loader的throttle:
// 逻辑
var throttle = function(callback, limit) {
var wait = false;
return function() {
if (!wait) {
callback();
wait = true;
setTimeout(function() {
wait = false;
}, limit);
}
};
};
// 中间省略一大段
if (mLoadNum !== 'all') {
window.addEventListener('scroll', throttle(function(e) {
if (!resumeUrl) return; // exit early if we don't have a position to resume at
if(!UI.imageHeight) {
UI.imageHeight = getEl('.ml-images img').clientHeight;
}
var scrollBottom = document.body.scrollHeight - ((document.body.scrollTop || document.documentElement.scrollTop) + window.innerHeight);
if (scrollBottom < UI.imageHeight * 2) {
log('user scroll nearing end, loading more images starting from ' + resumeUrl);
loadNextPage(resumeUrl);
}
}, 100));
}
也就是说其实他们实现一个类似的throttle逻辑然后给加载函数套上throttle就行了 (IMG:[
invalid]
style_emoticons/default/biggrin.gif)
我再强调,这是三个团队,团队!!!他们有啥做不到的 (IMG:[
invalid]
style_emoticons/default/mellow.gif)
This post has been edited by tsXor: Jan 3 2023, 10:47