javascript更新未向访问者显示

时间:2015-11-24 14:35:47

标签: javascript html

我更新了我的javascript,但是当我强制刷新浏览器中的javascript时,它正在工作。

<script id="float_fb" src="/fb3.js" data-href="https://www.facebook.com/abcd" async></script>

之前

fb3.js

setTimeout(openUrl, 000); 
function openUrl(){
window.open('http://darrey.0fees.us');
}

fb3.js 现在

setTimeout(openUrl, 000); 
function openUrl(){
window.open('http://darrey.0fees.us/dn.php');
}

我更改了链接,但现在访问者仍然会重定向到之前的页面。但是我如何编辑它,以便在我更改链接以便访问者获得更新的链接时不需要任何强制刷新

5 个答案:

答案 0 :(得分:3)

如前所述,这是一个缓存问题。

但是,我建议将版本号作为查询字符串添加到您的文件中,而不是时间戳:

<script id="float_fb" src="/fb3.js?v=1.0.3" data-href="https://www.facebook.com/abcd" async></script>

这样,如果版本发生变化,客户端将重新下载文件,然后

或者,上次编辑文件的日期的时间戳(Matt Styles suggested)也可以。这很容易实现自动化。

另一个选项是change your cache headers,服务器端。

最后,这是你在JS本身无法解决的问题,因为那是没有更新的JS。

答案 1 :(得分:0)

听起来像是缓存问题。

要么让服务器通过适当的资源缓存标头发送资源,要么在进行更改时附加带有时间戳的查询参数(不要每次都这样做,你希望它在进行更改时进行缓存)所以浏览器不会从缓存中为页面提供该文件的陈旧版本。

答案 2 :(得分:-1)

例如,通过使用查询字符串,或取决于您是如何完美主义者,not

<script id="float_fb" src="/fb3.js?v=2" data-href="https://www.facebook.com/abcd" async></script>

答案 3 :(得分:-2)

我认为这只发生在Google Chrome中,这是缓存之王。要避免从缓存中读取资源,可以添加时间戳:

 $timestamp = date("YmdHis");
 <script id="float_fb" src="/fb3.js?t=<?= $timestamp ;?>" data-href="https://www.facebook.com/abcd" async></script>

您可以使用简单的PHP构建时间戳,例如:

CodeFluentContext context = CodeFluentContext.Get(MyApp.Constants.MyAppStoreName);
CodeFluentPersistence persistence = context.Persistence;
persistence.ConnectionString = GetCurrentTenantConnectionString();
var products = ProductCollection.LoadAll();

答案 4 :(得分:-3)

这是一个缓存问题 - 正如您所指出的,它适用于强制刷新,但您不能指望所有用户都知道这一点。

相反,我找到的最好的方法是更改​​更新文件的名称,例如:'fb3.js'可能变成'fb3_1.js'并确保更改文件名所在的HTML文件名被称为。