gpt4 book ai didi

asp.net-mvc - 刷新与输入 URL 和按 Enter 键之间有什么不同?

转载 作者:行者123 更新时间:2023-12-03 03:58:31 25 4
gpt4 key购买 nike

我有 asp.net mvc 应用程序,当我使用 chrome 时,它​​会加载主页(其中有许多 .js 链接),它工作正常。

但是当我按 F5 或刷新时,它不会加载所有 .js(甚至更多其他内容,例如 .png)链接!

除非我单击 URL 文本框然后输入,否则它可以正常工作。

在控制台 chrome 中显示:net::ERR_CONNECTION_RESET

enter image description here

和标题标题:显示临时标题

在 Firefox 中没有任何反应,并且应用程序可以正常工作。

最佳答案

所有浏览器处理缓存的方式都不同。确保每次都会从服务器加载资源的唯一方法是使用不同的名称对其进行寻址。就我个人而言,对于 javascript 文件,我使用版本号,并在每次修改内容时递增此数字,以确保从服务器而不是从缓存加载新版本。比如

<script src="myLibrary_1.0116.js">

另一个选项是保留相同的 JS 文件名并在 url 后附加一个字符串,例如

<script src="myLibrary.js?version=1.0116">

然后,如果您绝对希望每次都从服务器加载脚本,那么您可以使用脚本将随机字符串附加到源名称的末尾。像这样

 var scriptsList=["script1.js","script2.js","script3.js"];

function buildKey(){
var text = "";
var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234567890";

for( var i=0; i < 16; i++ )
text += possible.charAt(Math.floor(Math.random() * possible.length));

return text;
}

window.onload = function(){
for(i=0; i<scriptsList.length; i++)
var s=[];
s[i] = document.createElement("script");
var sessionKey = buildKey();
s[i].type = "text/javascript";
s[i].src = scriptsList[i]+sessionKey;
$("head").append(s[i]);

}

var gracePeriod=25*1000;


function isCached(){
var currentTimeStamp= Date.now();
var contentGeneratedTime=parseInt(document.getElementsByTagName("BODY")[0].getAttribute("generated-Time"));
if(currentTimeStamp>contentGeneratedTime+gracePeriod)
window.reload(true);
}
<html><body generated-Time="UNIXTIMESTAMP"></body></html>

最后一个函数需要 PHP 或 asp.net 在 body 标记上设置时间戳。 JavaScript 将检查以确保文档是在最近 25 秒内生成的,如果不是,将强制重新加载,同时丢弃缓存。

long epochTime = (DateTime.UtcNow.Ticks - 621355968000000000) / 10000;

这将为您提供 ASP.net 中的 UNIX 时间戳(以毫秒为单位)

关于asp.net-mvc - 刷新与输入 URL 和按 Enter 键之间有什么不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33361129/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com