<script type="text/javascript" src="test.php"></script>
我第一次访问该页面时,未访问test.php,
但如果我刷新页面,它就会运行。
你有没有经历过这个?
答案 0 :(得分:9)
当test.php在本地或远程缓存时会发生。
答案 1 :(得分:4)
正如Tor和Silky所说,这很可能是由于页面被缓存造成的。如果您安装了Firebug,当您转到该页面时打开“Net”选项卡,您可能会看到它说“304 Not Modified” - 这意味着它已被缓存。
停止缓存文件的最简单,最可靠的方法(根据我的经验)是向其中添加随机查询字符串:
<script type="text/javascript" src="test.php?_=46031535"></script>
您只需在每次加载页面时更改它(无论是在服务器端还是客户端)。
当然,如果在服务器上正确设置了缓存标头,那么这应该不是问题,但我总是发现这种方法更容易。
答案 2 :(得分:2)
当缓存test.php
文件时可能会发生这种情况 - 可能是在浏览器的缓存中,也可能是某些代理程序。
禁止test.php的缓存可能会有所帮助;这可以通过发送正确的HTTP标头来完成 - 引用header
手册页中的示例:
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
?>
答案 3 :(得分:2)
缓存可能会导致呼叫中断。您可以通过在路径中附加不断变化的字符串来强制执行每次访问:
<script type="text/javascript" src="test.php?u=<?php print time(); ?>"></script>
答案 4 :(得分:2)
看起来您的脚本未在页面加载时注册,是否在Head标记内?
答案 5 :(得分:0)
你怎么知道没有去过?
你是否认为它,因为它内部的一些代码没有执行?
如果是这种情况,可能是在页面尚未完全加载时访问页面的DOM ...(因此javascript失败)
但第二次(以及之后)页面的html被缓存,所以当脚本尝试访问DOM时,它已经存在并且代码可以运行..
只是一个不同的想法;)
PS。你有任何Javascript错误吗?