2010-09-28 34 views
1

如果我使用GET参数来改变我的.php外部javascript文件加载基于页面的不同内容非浏览器将要缓存该文件吗?他们会将global_js.php?page = foo和global_js.php?page = bar视为具有不同的名称,并再次加载内容?或者我应该在头文件中包含某些内容来做到这一点?GET参数改变我的.php外部JavaScript文件加载不同的内容

更新: 不同的get参数被发送到文件,它会加载不同的内容。我采取了一个坏方法?我的CSS是这样的:

<link rel="stylesheet" type="text/css" href="./CSS/css_global.php?load={$pagecat}&load_mootools={$load_mootools}&load_jquery={$load_jquery}&css_extra={$css_extra}&version={$xx_version}_{$css_extra}"> 

如果我把我的每一个很少的外部文件在一个单独的文件事件,虽然会出现多个HTTP请求大多数用户并不在他们的浏览器,如美国启动非缓存行为开发人员和他们将缓存文件导致更快的用户体验,但现在我的CSS上可用的不同组合将不会被缓存,因为每个页面在发送CSS文件的get参数上略有不同。

+0

@skaffman你为什么删除标签“dynamic-javascript”和“external-file”? – Neo 2010-10-11 17:13:49

+0

我正在做一些标记修剪。像那些低使用,通用冠冕堂皇的标签无助于对问题进行分类。这不仅仅是你的问题,还有其他一些问题。 – skaffman 2010-10-11 18:13:33

回答

1

没错,浏览器会将它们视为不同的文件。

我不会推荐使用B00MER的方法,如果你DO希望文件被单独缓存。

一旦文件被单独缓存,您可以通过将版本参数附加到文件来强制进行缓存更新,因此每次更新应用程序(版本更改)时都会重新生成缓存。

app.js?module=account&version=1.0_RC2_2010-09-28 
+0

但它不只是更新不同的获取参数发送到文件,它会加载不同的内容。我采取了一个坏方法吗?因为今天我想到了自己......如果我将每个少数外部文件放在单独的文件事件中,尽管会有多个http请求,但大多数用户不会像我们的开发人员那样在他们的浏览器上激活非缓存行为,他们会缓存文件导致更快的用户体验,但现在使用CSS上的不同组合,它将永远不会被缓存,因为每个页面在发送CSS文件的get参数上略有不同。 – Neo 2010-10-11 08:37:52

1

您可能要尝试此之前从您的.php文件的任何输出JavaScript正在加载。

<?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 
?> 
相关问题