- 主题:html 文件中嵌入动态内容的问题 (转载)
一个模板文件有许多区域是服务器端动态生成的,我想将模板文件
做成一个静态 html 文件,然后在这个 html 文件内嵌入 url,每个
url 对应一个动态区域,我只知道有个 iframe 可以做到这个,但
似乎 iframe 特性大家很少用,而且我也担心嵌入太多 iframe 会
很影响页面加载速度。
另一个可能的办法是在主页面加载后触发一个 js 脚本,这个 js
脚本发起新的 http 请求获得动态数据重写 dom 树中的节点,请问
这个办法可行么?如果可行求这个 js 代码。
比如模板文件:
# index.html
....
<script type="text/javascript" src="/rewrite.js"></script>
<script type="text/javascript">
<!--
这部分其实在 src="rewrite-data-source-index.js" 中,
嵌入进来方便说明,src 中文件名由固定前缀和当前 html
文件名组合而成。
定义一个 url 到 keywords 的映射关系,比如
{
"/getNameAndScore.jsp" => ["name", "score"],
"/getAddress.jsp" => ["address"]
}
在 /rewrite.js 中需要一个 rewrite 函数,它根据上面
这个数组的内容,请求每一个 url,获得数据(可以是
xml 或者 json 格式),重写当前 html 源文件对应的 dom 树中
的节点,比如将 <td id="name">John</td> 中的 John 重写为
服务器动态生成的数据。
//-->
</script>
<body onLoad="rewrite()">
....
这样做的好处是静态内容不需要用动态网页办法一个个的 print 出来,应该
有助于提高效率。
--
修改:Dieken FROM 61.49.222.*
FROM 61.49.222.*
ajax?
【 在 Dieken (风催草低 - 明月何尝不照人) 的大作中提到: 】
: 一个模板文件有许多区域是服务器端动态生成的,我想将模板文件
: 做成一个静态 html 文件,然后在这个 html 文件内嵌入 url,每个
: url 对应一个动态区域,我只知道有个 iframe 可以做到这个,但
: ...................
--
FROM 60.208.248.*
你说的就是AJAX啊,不过因为要打开多个TCP连接,效率是降低而不是提高
【 在 Dieken (风催草低 - 明月何尝不照人) 的大作中提到: 】
: 一个模板文件有许多区域是服务器端动态生成的,我想将模板文件
: 做成一个静态 html 文件,然后在这个 html 文件内嵌入 url,每个
: url 对应一个动态区域,我只知道有个 iframe 可以做到这个,但
: ...................
--
修改:qgg FROM 125.34.2.*
FROM 125.34.2.*
关于这个有评测吗,这个效率跟静态内容与动态内容长度比、一个页面因为
AJAX 开的额外链接的消耗有关,不知道哪个更显著点。
【 在 qgg (天天~jOnNy的小宠猪) 的大作中提到: 】
: 你说的就是AJAX啊,不过因为要打开多个TCP连接,效率是降低而不是提高
--
FROM 61.49.142.*
ajax应该是降低了服务器端的负载,但增加了客户端的计算量,
对网站肯定是有好处,对用户则很难说。
【 在 Dieken (风催草低 - 明月何尝不照人) 的大作中提到: 】
: 关于这个有评测吗,这个效率跟静态内容与动态内容长度比、一个页面因为
: AJAX 开的额外链接的消耗有关,不知道哪个更显著点。
--
FROM 218.56.216.*
客户端一般都是计算资源比较富余的,客户端额外的这点计算量不知道影响
有多大,这个性能评测难以算上浏览器渲染的开销,现有的 web 应用压力
测试工具都是测试的服务器处理能力。
【 在 brep (哪个虫儿敢做声) 的大作中提到: 】
: ajax应该是降低了服务器端的负载,但增加了客户端的计算量,
: 对网站肯定是有好处,对用户则很难说。
--
FROM 61.49.142.*
参见jQuery的性能优化,客户端的计算资源还是不能任意使用的
【 在 Dieken (风催草低 - 明月何尝不照人) 的大作中提到: 】
: 客户端一般都是计算资源比较富余的,客户端额外的这点计算量不知道影响
: 有多大,这个性能评测难以算上浏览器渲染的开销,现有的 web 应用压力
: 测试工具都是测试的服务器处理能力。
: ...................
--
FROM 222.128.1.*