- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这个想法的动机是浏览器广告请求通常非常缓慢并且会阻塞页面呈现,更不用说消耗浏览器 javascript 线程了。如果一个页面加载了多个广告,那就是很多不可靠的,会阻止第三方调用。通过使用事件驱动的 headless 服务器端浏览器,是否可以同时发出这些请求并将广告 Assets 全部传递给浏览器?特别是,这是否适用于 doubleclick,其广告网络经常发出一系列请求,即 document.write 脚本标签,然后获取更多脚本,可能会加载 flash swf,然后请求一些额外的 gif 文件?这听起来有点过分,但广告是魔鬼,如果可以从客户端卸载广告,将极大地提高站点速度,因为服务器解决方案可以并行发出广告请求和处理 javascript。
编辑:回应@dthorpe:
要考虑的所有优点。
至于广告服务延迟,服务器端解决方案应该有所帮助,原因如下:
首先,可以并行发出多个广告请求。虽然有在浏览器中并行加载资源的方法,但我知道没有一个好的解决方案是完全非阻塞的(即在页面渲染和 onload 事件方面),除非你延迟加载你所有的广告。我正在寻找一种在加载页面其余部分的同时以非阻塞方式并行加载广告的方法。
其次,或许更重要的是,加载 doubleclick 广告通常涉及加载多个中间脚本。浏览器中的 Javascript 是单线程的。这直接意味着我页面的 javascript 将阻止 ad-javascript,从而减慢广告印象。广告的 javascript 反过来会阻止我页面的 javascript,从而减慢我的页面速度。我可能有其他第三方电话正在播放,用于跟踪或其他目的。我在页面上也有多个广告,所有这些都有助于减慢页面呈现和 javascript 执行速度。通过将广告加载卸载到服务器,我页面的 javascript 将不会与广告竞争。广告造成的延迟将取决于一个广告(最长的一个),但一个广告的加载行为不会受到其他广告或我的页面的影响,因此理论上应该更快。
目标是将广告与基本页面分离,这样广告就不会阻止页面呈现、页面加载事件,也不会减慢页面速度或彼此减慢速度。只要浏览器内的 javascript 是单线程的,我不知道有任何客户端解决方案可以实现完美的解除关联。当通过 javascript 实现长时间加载的广告时,页面的其余部分必须等待。
我知道各种延迟加载机制,一些涉及 iframe,一些覆盖 document.write 以适应延迟加载,但这些都没有取得令人满意的结果,这纯粹是由于干扰 javascript 执行的串行行为。
我想知道我是否可以在浏览器中使用 java applet 获得服务器端广告加载的好处,并避免您提到的 cookie/预加载情况?由于我们看到双击广告的严重退化,我实际上正在考虑这些不合格的方法。这些广告扼杀页面加载速度的方式真是令人厌恶:)
最佳答案
为了准确地完全代表客户端机器,您的 headless 服务器浏览器需要能够显示驻留在客户端上的广告网络域的浏览器 cookie。这将很困难,因为您的服务器的域名不在广告网络域中,因此客户端浏览器不会为您提供广告网络 cookie。
您可能会在服务器浏览器中捕获广告以代表客户“预加载”它们,但如果没有客户的浏览器 cookie,您将缺乏广告网络严重依赖的连续性和跟踪。广告网络选择显示的广告将基于您的服务器浏览器代表客户查看的页面,而不是客户查看的内容。
此外:如果加载广告内容是阻止客户端浏览器中页面呈现的原因,那么在服务器上呈现相同页面如何加快速度?您的服务器浏览器将遭受与客户端浏览器相同的网络和脚本延迟,客户端仍将坐在那里等待“某事”,但在页面完全加载并在服务器浏览器中处理之前不会显示任何内容,并且转发到客户端浏览器?将问题移至“上游”并不能解决任何问题。
最后:即使您的意图可能是高尚的(改善客户浏览体验),广告网络也很可能会认为您的服务器浏览器广告“预加载器”令人厌恶并且违反了他们的广告网络服务条款,因为它会干扰他们能够跟踪实际客户的浏览事件。
关于javascript - 是否可以使用 headless 浏览器发出服务器端广告请求而不是浏览器内广告请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5360322/
我正在尝试从该网站抓取历史天气数据: http://www.hko.gov.hk/cis/dailyExtract_uc.htm?y=2016&m=1 在阅读了 AJAX 调用后,我发现请求数据的正确
我有两个 postman 请求 x,y,它们命中了两个不同的休息 api X,Y 中的端点。 x 会给我一个身份验证 token ,这是发出 y 请求所必需的。如何在请求 y 中发出请求 x ?也就是
我使用请求库通过 API 与其他服务器进行通信。但现在我需要同时发送多个(10 个或更多)POST 请求,并且只有在所有响应都正确的情况下才能进一步前进。通常语法看起来有点像这样: var optio
背景:当用户单击按钮时,其类会在class1和class2之间切换,并且此数据是通过 AJAX 提交。为了确认此数据已保存,服务器使用 js 进行响应(更新按钮 HTML)。 问题:如果用户点击按钮的
我正在将 Node.js 中的请求库用于 Google 的文本转语音 API。我想打印出正在发送的请求,如 python example . 这是我的代码: const request = requi
我经常使用requests。最近我发现还有一个 requests2 和即将到来的 requests3 虽然有一个 page其中简要提到了 requests3 中的内容,我一直无法确定 requests
我正在尝试将图像发送到我的 API,然后从中获取结果。例如,我使用发送一个 bmp 图像文件 file = {"img": open("img.bmp)} r = requests.post(url,
我发现 Google Cloud 确保移出其物理环境的任何请求都经过强制加密,请参阅(虚拟机到虚拟机标题下的第 6 页)this link Azure(和 AWS)是否遵循类似的程序?如果有人能给我指
我有一个 ASP.NET MVC 应用程序,我正在尝试在 javascript 函数中使用 jQuery 来创建一系列操作。该函数由三部分组成。 我想做的是:如果满足某些条件,那么我想执行同步 jQu
我找不到如何执行 get http 请求,所以我希望你们能帮助我。 这个想法是从外部url(例如 https://api.twitter.com/1.1/search/tweets.json?q=tw
我的应用只需要使用“READ_SMS”权限。我的问题是,在 Android 6.0 上,当我需要使用新的权限系统时,它会要求用户“发送和查看短信”。 这是我的代码: ActivityCompat.re
我的前端代码: { this.searchInput = input; }}/> 搜索 // search method: const baseUrl = 'http://localho
我有一个由 AJAX 和 C# 应用程序使用的 WCF 服务, 我需要通过 HTTP 请求 header 发送一个参数。 在我的 AJAX 上,我添加了以下内容并且它有效: $.ajax({
我正在尝试了解如何使用 promises 编写代码。请检查我的代码。这样对吗? Node.js + 请求: request(url, function (error, response, body)
如果失败(除 HTTP 200 之外的任何响应代码),我需要重试发送 GWT RPC 请求。原因很复杂,所以我不会详细说明。到目前为止,我在同一个地方处理所有请求响应,如下所示: // We
当用户单击提交按钮时,我希望提交表单。然而,就在这种情况发生之前,我希望弹出一个窗口并让他们填写一些数据。一旦他们执行此操作并关闭该子窗口,我希望发出 POST 请求。 这可能吗?如果可能的话如何?我
像 Facebook 这样的网站使用“延迟”加载 js。当你必须考虑到我有一台服务器,流量很大时。 我很感兴趣 - 哪一个更好? 当我一次执行更多 HTTP 请求时 - 页面加载速度较慢(由于限制(一
Servlet 容器是否创建 ServletRequest 和 Response 对象或 Http 对象?如果是ServletRequest,谁在调用服务方法之前将其转换为HttpServletReq
这是维基百科文章的摘录: In contrast to the GET request method where only a URL and headers are sent to the serv
我有一个循环,每次循环时都会发出 HTTP post 请求。 for(let i = 1; i console.log("succes at " + i), error => con
我是一名优秀的程序员,十分优秀!