js如何将服务器上的xml文件缓存到本机?

JavaScript029

js如何将服务器上的xml文件缓存到本机?,第1张

在第一次请求的时候

如果是动态生成你就在服务器的response header上加上Last-Modified

然后你第二次请求的头上就会有If-Modified-Since

这个时间就是你第一次请求道本地的时间

如果服务的 文件的属性 不比你新

服务器就返回304 .然后你浏览器自然就在缓存里面取这个 xml

主要是服务器返回304

如果是请求静态文件 那一般的服务器都会自动的加上Last-Modified的

这个叫静态资源打包,因为浏览器下载静态文件的时候是有线程数限制的,所以下载1个100K的js/css,会比10个10k的js/css快的多,为了提高性能,服务器端会把js/css合并成一个文件(因为都是文本嘛)再向客户端输出。比如,一个请求的地址是:http://www.baidu.com/static/pack?js=a,b,c,d,e,那么服务器端你在这个请求的接口里,根据js参数的值,把a.js到e.js的内容读取出来,再合并成一个文件(一般同时还会压缩,比如去空格,比如缩短变量名等),输出到客户端。如果服务器端再加上缓存,那可能连合并都不需要了。这样页面加载速度会快非常多。比较常用的js打包工具有google的google closure,css用yui compressor。基本思想就是这样,具体的你可以搜一下。

参考资料:http://q.cnblogs.com/q/30631/

首先,下载文件就别想了,你那个execCommand有兼容性问题,貌似其他浏览器不支持

至于window.open,这个多数会被拦截吧,现在都不允许弹窗了。至于txt文档,有的浏览器会直接显示出来,有的会当文件下载,这个关键还是在服务器的设置,服务器传输过来是有标头,表明详细情况,浏览器对应处理。

所以你要比如点击一个对象后弹出下载的界面,可以有几种方式,比如不用TXT,变成其他比如RAR的,浏览器绝对不会直接显示出来,还有就是在服务器端,弄成不是TXT,弄成动态页面,然后输出为TXT,此时设置标头为下载,不允许直接显示,不过,如果这个TXT是在其他服务器上,你想点击了直接下载,这个有难度。

以前我做个一个东西,7年前了,就是把东西弄在框里,这样下载也可以的

<iframe id="download" src="对象地址"></iframe>

然后调用execCommand保存这个对象。这样我是成功的,把一个rar显示在框内,一片乱码,然后调用这个保存后,成为rar,可以使用。