html刷新标签下内容,HTML5音频标签好好尝试一下页面上的内容刷新刷新

开发者遇到一个问题,在创建一个电台网站时,使用C#后端生成HTTP响应流并配合HTML5音频标签播放音乐。期望行为是每次页面加载时随机播放一首歌曲,但实际上,音频标签在页面重新加载或导航后会继续播放之前缓冲的歌曲,而不是请求新的内容。尝试了设置随机ID、清除缓冲区和防止缓存的方法,但问题依然存在。问题可能与音频标签的缓存机制及页面重载时的资源处理有关。
摘要由CSDN通过智能技术生成

我正在开发一个电台的网站,我创建了一个C#后端写入字节流在当前的HTTP响应,然后装上HTML5 音频标记。HTML5音频标签好好尝试一下页面上的内容刷新刷新

我的问题是:我有例如5首歌曲。期望的行为是每次页面加载时,它都应该要求控制器随机播放一首歌曲。实际发生的情况是,首次加载页面时,控制器会被调用并且歌曲正常播放,但如果用户重新加载页面,或导航到新页面并将它们导回到收音机,则会使用音频代替再次调用控制器,只是播放上次调用时在音频缓冲区中下载的内容,并且只有当下载的缓冲区结束播放时,音频标签才会调用控制器,从而产生不需要的跳跃,如播放歌曲15秒并开始一首新歌。

我的音频HTML是在“render”方法上动态创建的。我试图让id随机,尝试强制缓冲区清理干净,但即使使用新的id,即使preload属性设置为“none”,该标记仍将播放预加载缓冲区的内容。除此之外,我尝试将一个随机标记作为参数发送给c#控制器,以尝试避免基于URL的任何缓存问题,但这种方法并不奏效。

继承人我的控制器:

public void GetStream(StreamType? type, string token)

{

var files = this.GetFiles(type);

int rnd;

rnd = new Random((int)DateTime.Now.Ticks).Next(0, files.Count);

using (Stream mystream = files[rnd].OpenRead())

{

this.CurrentTrack = files[rnd].Name;

mystream.Position = 0;

using (BinaryReader reader = new BinaryReader(mystream))

{

byte[] bytes = new byte[mystream.Length];

System.Web.HttpResponse response = System.Web.HttpContext.Current.Response;

response.Clear();

response.ClearHeaders();

response.ClearContent();

response.BufferOutput = true;

response.ContentType = "audio/mp3";

response.AddHeader("Accept-Ranges", "bytes");

response.AddHeader("Cache-Control", "no-cache");

response.AddHeader("Content-Length", mystream.Length.ToString());

int bytesRead;

while ((bytesRead = reader.Read(bytes, 0, bytes.Length)) > 0)

{

response.OutputStream.Write(bytes, 0, bytesRead);

}

}

}

}

在这里,我的JS:

audioApp.Initialize = function (type) {

audioApp.Render(type);

}

audioApp.Render = function (type) {

type = (type == undefined || type == null || type == "") ? 0 : type;

var token = audioApp.MakeId();

var html = "

"

+ "

"

+ ""

+ " "

+ " Sorry, your browser doesn't support HTML5 audio."

+ ""

$("#divAudioRender").append(html);

}

的 “渲染” 的方法将创建音频元素职位,以我的后端。

我在网上搜索了一个办法,迫使音频缓冲了很多,每次刷新页面被清洗,但我无法找到任何东西。

任何帮助表示赞赏,

谢谢!

+0

请从问题中删除所有不相关的代码,并保持** **仅需要什么刚刚 –

+0

去掉,只留下什么是相关的。 thx –

+0

你可以把它分解成一个能够再现问题所在的页面吗?你所描述的真的不应该发生。 –

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值