Html 这将在何时发生?

Html 这将在何时发生?,html,scripting,Html,Scripting,我第一次访问该页面时,没有访问test.php 但是如果我刷新页面,它就会运行 您是否经历过这种情况?在本地或远程缓存test.php时会发生这种情况。在缓存test.php文件时可能会发生这种情况,该文件可以位于浏览器的缓存中,也可以通过其他代理进行缓存 禁止test.php的缓存可能会有所帮助;这可以通过发送正确的HTTP头来完成——引用手册页面中的一个示例: PHP脚本通常生成动态 用户不能缓存的内容 客户端浏览器或任何代理缓存 在服务器和客户端之间 浏览器许多代理和客户端可以 必须使用

我第一次访问该页面时,没有访问test.php

但是如果我刷新页面,它就会运行


您是否经历过这种情况?

在本地或远程缓存test.php时会发生这种情况。

在缓存
test.php
文件时可能会发生这种情况,该文件可以位于浏览器的缓存中,也可以通过其他代理进行缓存


禁止test.php的缓存可能会有所帮助;这可以通过发送正确的HTTP头来完成——引用手册页面中的一个示例:

PHP脚本通常生成动态 用户不能缓存的内容 客户端浏览器或任何代理缓存 在服务器和客户端之间 浏览器许多代理和客户端可以 必须使用以下命令禁用缓存:


缓存可能导致呼叫中断。您可以通过在路径中添加一个不断变化的字符串来强制每次访问调用此函数:

<?php
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
?>

正如Tor和Silky所说,这很可能是由于页面被缓存造成的。如果您安装了Firebug,当您转到页面时打开“Net”选项卡,您可能会看到它显示“304未修改”-这意味着它已被缓存

根据我的经验,停止缓存文件最简单、最可靠的方法是向其添加随机查询字符串:

<script type="text/javascript" src="test.php?u=<?php print time(); ?>"></script>

您只需在每次页面加载时更改它(在服务器端或客户端)


当然,如果在服务器上正确设置了缓存头,那么这不应该是一个问题,但我总是发现这种方法更简单。

看起来您的脚本没有在页面加载上注册,是在Head标记中吗?

您怎么知道它没有被访问

您是否假设它,因为它内部的某些代码无法执行

如果是这种情况,可能是您正在访问页面的DOM,而页面尚未完全加载。。(因此javascript失败)

但是第二次(以及之后)页面的html被缓存,因此当脚本试图访问DOM时,它已经在那里了,代码可以工作

只是另一种想法;)


ps.您是否有任何Javascript错误?

如果只是这样,那么test.php不应该在第一次访问,也不应该在刷新时访问?它将从上次刷新时被缓存。没错,但问题表明它不是在第一次加载的,那么它是如何被缓存的呢?我猜他没有考虑到其他会话可能会为他缓存它;实际上,将文件的修订号放在上面(如果您的系统支持的话)是很好的(这也是很好的;对于静态文件,我会通过一些构建脚本自动执行)。这样,同一版本总是被缓存,但新版本会立即重新下载。
<script type="text/javascript" src="test.php?u=<?php print time(); ?>"></script>
<script type="text/javascript" src="test.php?_=46031535"></script>