自从用了 ASP.Net MVC后就喜欢上了它 ,因为MVC对服务器控件的依赖大大减少,它生成的HTML页面就比WebForm清爽多了,加载速度有了明显的改善。
但对于页面中内嵌script,还是不能彻底的避免,如:
是否有一种方法可以将这段JS不内嵌在HTML中,使用<script src="">标记从外部文件加载?
答案是肯定的,通过自定义WebControl完全可以实现,有如下WebControl
这个WebControl很简单,就是将JS代码生成到外部文件,替换成<script src=""> 标签来加载
生成的JS文件名由3部分主城,<控件ClientID><JS字符串长度><JS字符串HashCode>.js
也就是说,如果Javascript没有改变,浏览器在读取第一次后,只要这段JS没有改变,则仍然可以从缓存读取。这样就降低了不必要的网络流量。
此控件对JS代码的编写并没有任何影响 ,仅仅是在其外部用这个控件包起来即可。
生成的 HTML代码中就 清爽多了
PS.SafeJavascriptEncode 是一个扩展方法,用于将多字符串编码成安全的Javascript字符串 对于使用了负载均衡器的多台服务器,这种办法也是可行的,负载均衡器会将一定时间段内收到的后续HTTP请求发往同一台服务器