目录 |
为方便开发者使用和降低访问延迟,CSS和XNJS允许将JavaScript/CSS代码单独放在一个文件里,并由校内开放平台的服务器来缓存这些文件。
在XNML中用<link>标签的href属性来指定外部CSS文件,用<script>标签的src属性来指定外部JavaScript文件。
校内开放平台将外部引用文件取至校内服务器,经过CSS或XNJS解析引擎的处理之后,缓存到校内服务器上。同时,<link>和<script>标签中指向app服务器的URL被改为指向校内服务器上相应的缓存地址。
校内开放平台对任何一个URL对应的外部文件永久缓存,永不过期,但最多只为每个app缓存200个文件。当开发者修改了某一个外部文件时,需要显式地改变该文件的URL以反映它的变化。这时,校内服务器检测到这种变化从而可以重新向app服务器请求该文件,并缓存新的文件版本。浏览器对该文件的后续请求便不会被转发至app服务器。当一个app缓存的文件数量超过200个时,校内服务器开始删除为该app缓存的最旧文件。
当开发者修改了某一个外部文件时,需要同时修改该文件的URL。如修改文件http://appserver.com/example.css?v=1.0之后,可以将URL改为http://appserver.com/example.css?v=2.0,以反映该文件新的版本。
“代码示例”一节给出了一种推荐方案。
CSS外部引用文件的例子:
<link rel="stylesheet" type="text/css" href="http://appserver.com/css.php?v=2" />
XNJS外部引用文件的例子:
<script src="http://appserver.com/function.js?v=1.0"></script>
下面的PHP代码给出一种推荐给开发者的做法,将文件的修改时间以查询串(query string)的形式加在该文件url的末尾,这样每当文件被修改时,则访问该文件的url也会自动地发生变化。
<?php
$ts = filemtime("function.js");
print "<script src=\"http://appserver.com/function.js?ts=$ts\"></script>";
?>