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

Gur*_*awa 3 javascript coldfusion caching

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

<script type="text/javascript" src="abc.cfm">
Run Code Online (Sandbox Code Playgroud)

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

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

问候

bar*_*nyr 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 --->
Run Code Online (Sandbox Code Playgroud)

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

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