我正在访问我的网站上的链接,每次访问时都会提供一个新图像.
我遇到的问题是,如果我尝试在后台加载图像然后更新页面上的图像,图像不会改变 - 虽然它在我重新加载页面时更新.
var newImage = new Image();
newImage.src = "http://localhost/image.jpg";
function updateImage()
{
if(newImage.complete) {
document.getElementById("theText").src = newImage.src;
newImage = new Image();
number++;
newImage.src = "http://localhost/image/id/image.jpg?time=" + new Date();
}
setTimeout(updateImage, 1000);
}
Run Code Online (Sandbox Code Playgroud)
FireFox看到它们的标题:
HTTP/1.x 200 OK
Cache-Control: no-cache, must-revalidate
Pragma: no-cache
Transfer-Encoding: chunked
Content-Type: image/jpeg
Expires: Fri, 30 Oct 1998 14:19:41 GMT
Server: Microsoft-HTTPAPI/1.0
Date: Thu, 02 Jul 2009 23:06:04 GMT
Run Code Online (Sandbox Code Playgroud)
我需要在页面上强制刷新该图像.有任何想法吗?
目前,大多数流行的网站,如谷歌,雅虎检测用户连接速度是否缓慢,然后给出一个选项来加载网站的基本版本而不是高端版本.
有哪些方法可以检测慢速互联网连接?
PS我认为这是通过javascript实现的,所以我会将其标记为javascript问题?但是,我正在寻找更多针对PHP的答案,如果这也是服务器相关的.
在下面的代码中,我试图计算图像的下载速度,但速度是无穷大.我究竟做错了什么?
var imageAddr = "/images/image.jpg" + "?n=" + Math.random();
var startTime, endTime;
var downloadSize = 200000;
var download = new Image();
download.onload = function () {
endTime = (new Date()).getTime();
showResults();
}
startTime = (new Date()).getTime();
download.src = imageAddr;
function showResults() {
var duration = Math.round((endTime - startTime) / 1000);
var bitsLoaded = downloadSize * 8;
var speedBps = Math.round(bitsLoaded / duration);
var speedKbps = (speedBps / 1024).toFixed(2);
var speedMbps = (speedKbps / 1024).toFixed(2);
alert("Your connection speed is: \n" + …Run Code Online (Sandbox Code Playgroud) 是否有任何实用程序来测量从我的服务器到客户端或任何标准APIS的带宽.需要这个用于Web应用程序
我已经看到了一些没有回答这个问题的问题,是否可以使用java脚本检查某些带宽并根据它加载特定内容?
BBC似乎在使用我的手机和不知名的地方给我低质量的图像.
通过这个酷的服务看起来这和它的CDN所以它可以是服务器端.
有谁知道他们是怎么做到的?或者我如何使用asp.net或javascript或社区开源插件来做到这一点.
我认为这可能与https://github.com/yahoo/boomerang/有关,但不确定这是它的真正目的.
我正在尝试找到一种使用PHP或Javascript测试网络速度的方法.
这可能吗?
理想情况下,我想测试速度并动态决定向客户端提供多少内容......
我应该指出,我主要是谈论移动设备.大多数宽带连接差别很小,所以我的目的是衡量某人是连接到WiFi网络还是在蜂窝数据网络上挣扎.
我正在尝试实施带宽测试,看起来最常规的方法是在客户端和服务器之间来回传输一个或多个图像,看看上传和下载时间是多少.事实上,这个答案已经涵盖了获取下载时间的想法.
但是,在这一点上,我不太确定如何使用或不使用其他答案来使流程双向进行.即使在添加调试语句之后,我还没有找到图片数据存储在其他答案代码中的位置.如果我尝试从一个干净的平板开始,我在Internet/Stack Overflow上发现的很多关于来回发送图像的API信息几乎没有解释或详细说明,所以我无法使用它把两者放在一起.此外,我将有时涉及其他平台的一些实验放在一起似乎真正限制了带宽使用,以及根据图像的大小不正确地缩放延迟.
使用JavaScript,您如何在客户端和服务器之间来回传输相同的图像,以便您可以准确地使用延迟和图像的大小来测量带宽?如何使用相同的图像,无需限制,并且没有用户的交互,这两种方式都可以工作?
编辑
我可以尝试发布我尝试过的东西,但它很难有意义.其中很多都是在Flash中.当我开始使用JavaScript时,我开始尝试这些方面:
$.get('http://ip address/test.php?filename=XXX&data=LONG STRING OF DATA REPRESTING THE DATA TO BE SAVED PROBABLY LESS THAN 2K IN SIZE AND ALSO YOU SHOULD ESCAPE OR ATLEAST URIENCODE IT', function(data) {
alert('here')
eval(data);
});
Run Code Online (Sandbox Code Playgroud)
PHP文件是:
<?php
echo "response=here";
?>
Run Code Online (Sandbox Code Playgroud)
我将PHP文件用于Flash和JavaScript.我还使用Adobe Media Server和Flash.但是在使用Flash/PHP时,从1MB文件到32MB文件,Flash只会将延迟缩放10倍,远不及32.它似乎也至少在与AMS配对时限制带宽使用,甚至可能与PHP文件配对.
我准备转换JavaScript代码以将实际图像传递到PHP文件...但我无法达到它.即使我做的事情如下:
for (var s in download) {
alert(s + ": " + download[s]);
}
Run Code Online (Sandbox Code Playgroud)
download作为在JavaScript中下载图像的对象(参见代码的链接答案),我没有看到任何有用的东西. download.children.length是0等等.我也不愿意相信结果不会限制带宽使用,就像Flash实验那样,没有进一步的确认; 也许图像必须使用一种类型的API调用或其他类型来传递,以使其真正正常工作?
从本质上讲,我真的在寻找好的API信息.我看到的其他东西并不精确,无法连接点.
2ND编辑
我遇到的一个陷阱是使用POST来下载图像.我在使IIS 7允许POST下载具有 "异常"二进制字符的任意文件类型(即jpgs)并允许它们大小超过2MB 时遇到了很多困难.
使用下面的脚本来检测连接到网络的系统的互联网速度。参考javascript检测网速
但是,https://fast.com/和http://www.speedtest.net/上的速度结果不同。
var imageAddr = "http://www.kenrockwell.com/contax/images/g2/examples/31120037-5mb.jpg";
var downloadSize = 4995374; //bytes
function ShowProgressMessage(msg) {
if (console) {
if (typeof msg == "string") {
console.log(msg);
} else {
for (var i = 0; i < msg.length; i++) {
console.log(msg[i]);
}
}
}
var oProgress = document.getElementById("progress");
if (oProgress) {
var actualHTML = (typeof msg == "string") ? msg : msg.join("<br />");
oProgress.innerHTML = actualHTML;
}
}
function InitiateSpeedDetection() {
ShowProgressMessage("Loading the image, please wait...");
window.setTimeout(MeasureConnectionSpeed, 1); …Run Code Online (Sandbox Code Playgroud) 我目前正在构建这个使用视频背景作为登陆页面的网站,但是如果互联网速度很慢,他们想要播放一个gif.他们告诉我,有一个名为http://elevationchurch.com的网站是他们想要的99%,所以我使用该页面作为参考,但不知道他们将如何改变它.我的意思是我虽然这是一个媒体查询,但后来我的笔记本电脑开始向我展示Gif,是一个4k的屏幕.我知道他们在WP上有它,但我不知道是插件还是什么.
解决这类功能的最佳方法是什么?
到目前为止这是我的代码(非常简单):
<section class="mainBG" style="background-image: url(assets/img/gihty.gif);">
<div class="d-flex align-items-center h-100 justify-content-center">
<div class="col-md-6 text-white text-center">
<p>LAST SERMON</p>
<h1>SERMON TITLE</h1>
<a href="#" class="btn btn-light btn-wide">WATCH NOW</a>
<p class="lead mt-3">VIEW MORE SERMONS</p>
</div>
</div>
<div class="col-md-12 text-white d-flex align-items-center justify-content-center py-2" style="background-color: rgba(17, 17, 17, 0.73); position: absolute; bottom: 0;">
<p class="my-auto text-center text-md-left">Join Us for Praise Party 2017</p>
<button class="btn btn-light mx-3">Learn More</button>
</div>
</section>
Run Code Online (Sandbox Code Playgroud) 使用此 API:https://developer.mozilla.org/en-US/docs/Web/API/Network_Information_API
$ navigator.connection您可以在浏览器控制台中运行以接收有关网络连接的不同值。
但是该downlink属性的最大值为 10(也称为 10Mbps)。为什么这里会被封顶呢?并没有真正帮助我,因为我需要更多信息,因为我正在决定客户端是否可以处理可能需要超过 10Mbps 的高清视频,谢谢。
我将测试我的网站速度,主要是网络服务器延迟.总结一下我想要实现的目标:
1)在我的网站上托管javascript的网页(http://myweb.com/test-speed.html)
2)我把这个网址给了我的朋友
3)他们不需要做任何事情,他们只需要访问这个网页,然后在网页上打印延迟.
4)如果网页也可以告诉访问者所处的状态(使用IP地址范围数据库),那将是一个加号.
现有解决方案吗?我可以修改javascript以将数据记录到数据库中,但我认为这里的核心是如何编写javascript以了解延迟.