首页 新闻 会员 周边

关于网站动态部分与静态部分分离..

0
悬赏园豆:30 [已解决问题] 解决于 2008-11-10 11:34

现在我有这样一个需求, 把网站的动态部分,例如html,asp,aspx部分,和静态部分,例如jpg,gif,等等类似的进行分离,分别放在两台服务器上,,我现在需要把已经存在的网站的这两部分进行分离,请问下各位大侠有没什么高见?  我用程序虽然吧图片按原始目录分离出来了.文件也能按原始目录进行分离,但是 文件里面的图片路径进行替换就感到很难处理,比如<img src="../image/new1.jpg"> 需要被转换成 <img src=http://localhost/image/new1.jpg>,像这样简单的路径还容易替换,但是 像 Guid文件夹里有个a.html页面,里面包含2个图片文件 图片1<img src="images/new1.jpg"/> 图片2 <img src="../news/images/img2.jpg"/> ,图片1引用了Guid文件夹内images下的new1.jpg文件,但是 图片2 却引用了 Guid同及目录 news下的images文件夹的img2.jpg..本来我是用正则表达式统一替换,单这样不同目录的引用被替换后就成了<img src=http://localhost/Guid/image/new1.jpg 与 http://localhost/Guid/News/images/img2.jpg ,很明显New/images/img2.jpg不在Guid目录下面,所以这类似的问题交错出现,很是麻烦,还往各位高人帮下忙.. 提个解决的思路... 多谢.

偶行势箭的主页 偶行势箭 | 初学一级 | 园豆:30
提问于:2008-11-10 01:14
< >
分享
最佳答案
0

你不能用正则直接替换,而是应该将这些原路径先提取出来,然后算出其绝对路径,再去掉host,然后再和你的新路径合并。

比如 images/new1.jpg,你的程序在打开这个  a.htm 文件时是知道其在 Guid目录下的,那么你用 Uri 这个类就可以通过输入当前Uri 和 相对路径得到绝对路径是 http://oldhost/Guid/image/new1.jpg.

然后 再用 Uri 这个类获取其相对路径  Guid/image/new1.jpg 然后再和 新的host 如 localhost合并就可以了。

../news/images/img2.jpg 也是同理,绝对路径的出来是 http://oldhost/news/image/img2.jpg

再合并后就是 http://localhost/news/image/img2.jpg

eaglet | 专家六级 |园豆:17139 | 2008-11-10 07:20
其他回答(4)
0

这个有点麻烦了,关注...

上不了岸的鱼 | 园豆:4613 (老鸟四级) | 2008-11-10 03:11
0

其实我觉得你可以考虑重构一下程序:如果有时间和必要的话

如果图片的src都是写死到文件中的,那么很可惜,你要一个个查找替换了,还好我们有正则表达式可以做这个,不过工作量估计依然不小,而且没有办法保证完全正确

如果可以重构,一个小技巧,所以静态资源,比如图片脚本样式之类,从一开始就设计为可分离,比如一个图片应该是这个样式滴:

<img src="<%=ResourcesURL%>/news/new1.jpg" alt="new1" />

这个ResourcesURL可以放到web.config里也可以放到数据库里,随便哪里都可以,是一个可配置的字符串,这样当你把图片分离出去的时候就容易了,尤其当你想把图片文件放到单独的二级域名下的时候(放到单独二级域名可以加速浏览器加载速度,可以平衡服务器IO等等,好处多多)

丁学 | 园豆:18730 (专家六级) | 2008-11-10 08:06
0

之前的设置没有考虑这些的话,始终都是力气活。

5yplan | 园豆:1330 (小虾三级) | 2008-11-10 11:14
0

丁学的意见不错 以后做站的时候要小心了!! 不亏是专家   呵呵

Allie | 园豆:707 (小虾三级) | 2008-11-10 11:14
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册