解决iis静态文件 禁用缓存


解决方案(推荐)


对应的web.config文件

<?xml version="1.0" encoding="UTF-8"?>

             


    
      

   
    
< /configuration


猜测原理分析

场景: 一个页面, 会加载一些js或css文件.

浏览器第一次加载静态文件(js或css)时, 响应报文的header里会默认设置Expire.

浏览器会保存该文件到本地.

(上图使用ChromeCacheView软件可以查看)

浏览器第二次请求时, 会直接从本地获取文件判断是否到达过期时间, 未达过期时间, 直接取该文件(显示磁盘缓存), 不向服务器发出请求. (服务器文件即使修改了, 也不会去加载).

解决方案: 响应报文的header里不返回Expire.

这样每次请求都会向服务器发出请求. 返回也会返回304








以下方案,使用以下方案后, 上面的方案将无效.  是将静态文件交与.Net的类来处理. 不能解决问题. 了解一下思路. 

独立打开一个选项卡访问js或css是不会缓存的. 但在html里加载css与js时, 还是会从本地读取js与css. 主要原因是返回的js与css文件带有Expire. 再添加一个header: Expire 设置为1900-01-01或空可能可以, 没测试过.


1. 将静态文件的请求 交由.net程序集来处理

对应的web.config文件

<?xml version="1.0" encoding="UTF-8"?>

    
        
            
        
      
    

 


2. 输出缓存设置(这个只能处理.net程序集处理的请求)

对应的web.config文件

<?xml version="1.0" encoding="UTF-8"?>

    

       
            
                
                
            

        


    
< /configuration> 


资料: https://www.cnblogs.com/-ljj/archive/2013/02/12/2910200.html