登录/创建账户

目录

[编辑] 概述

为方便开发者使用和降低访问延迟,CSSXNJS允许将JavaScript/CSS代码单独放在一个文件里,并由校内开放平台的服务器来缓存这些文件。

XNML中用<link>标签的href属性来指定外部CSS文件,用<script>标签的src属性来指定外部JavaScript文件。

[编辑] 原理

校内开放平台将外部引用文件取至校内服务器,经过CSSXNJS解析引擎的处理之后,缓存到校内服务器上。同时,<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,以反映该文件新的版本。

“代码示例”一节给出了一种推荐方案。

[编辑] 使用规范和限制

  1. 为每个app最多缓存200个文件(包括CSS和JavaScript文件)。
  2. 每个外部引用文件的大小不能超过32KB。
  3. 确保不要使用总是在变化的URL,如为每一个用户都创建不同的URL。例如,http://appserver.com/example.js?app_id=1234和http://appserver.com/example.js?app_id=1235这样的URL务必要避免。
  4. 为减少每个页面HTTP请求的数量从而提高性能,建议app的每个页面应用的外部文件不要多于10个。
  5. 如果代码数量很少,不建议写在外部文件里,而应该使用<link>和<src>标签直接写在页面里。

[编辑] 代码示例

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>";
?>