使用<script>标记</script>提供.cfm文件

时间:2013-12-07 19:17:59

标签: javascript caching coldfusion

我经常看到有时动态文件通过<script>标记提供,如下所示。 “abc.cfm”文件包含JavaScript和服务器端CF代码。

<script type="text/javascript" src="abc.cfm">

如果我们使用简单的.js文件而不是服务器.cfm文件,通常会在浏览器中缓存JavaScript文件。那么上面的缓存如何表现呢?浏览器是否会使用JavaScript的缓存内容,或者每次都会向CF服务器调用以获取代码内容并重新编译js?另外,使用这种技术的优点和缺点是什么?

我搜索了很多但找不到相应的好答案,这恰当地解释了这一点。

此致

1 个答案:

答案 0 :(得分:10)

上述技术的优点是服务器正在生成JavaScript。这意味着您可以使用ColdFusion从数据库或用户的会话中获取数据。也许您需要一组数据来填充一些下拉菜单,具体取决于某人选择的内容。上面示例中的abc.cfm可以查询数据库并生成一些包含所需数据的JavaScript。

关于浏览器缓存,浏览器将缓存它告知缓存的内容。如果你在abc.cfm中发送标题告诉浏览器不要缓存文件,那么每次加载页面时它都会重新加载。用于表示没有缓存的一组典型标头是:

<cfheader name="Cache-Control" value="no-cache, must-revalidate">
<cfheader name="Pragma"value="no-cache">
<cfheader name="Expires" value="Sat, 26 Jul 1997 05:00:00 GMT"> <!--- Date in the past --->

如果你在ABC.cfm的顶部弹出,浏览器应该每次重新加载它。

该方法的缺点是浏览器必须在每次加载页面时加载abc.cfm,从而减慢页面速度。另一个问题是abc.cfm往往包含JS和CF代码的混合,这对维护来说并不好。另一种方法是将所有代码编写为.JS文件,让浏览器缓存并使用CF代码将JSON直接导入页面时所需的数据吐出。然后调用JS代码,将打印的JSON数据传入页面。查看SerializeJSON以获得将CF数据转换为客户端可以读取的JSON的简洁方法。