为asp.net找到正确的缓存和压缩策略

为asp.net找到正确的缓存和压缩策略,asp.net,asp.net-mvc,caching,compression,screen-scraping,Asp.net,Asp.net Mvc,Caching,Compression,Screen Scraping,我正在尝试找出为我正在构建的应用程序进行缓存的最佳方法。它严重依赖维基百科网站的屏幕抓取。以下是我目前正在进行的过程: 用户通过我的站点从维基百科请求一个主题(即将是)注意:由于IIS无法处理,我被迫使用querystring参数 检查是否已将格式化的html存储在数据库中,如果已存储,则仅向用户显示 否则,我将执行对wikipedia的web请求 如果需要,解压缩流 执行一系列DOM操作以除去我不需要的东西(并注入我确实需要的东西) 将html存储在我的数据库中以备将来的请求 将html返回到

我正在尝试找出为我正在构建的应用程序进行缓存的最佳方法。它严重依赖维基百科网站的屏幕抓取。以下是我目前正在进行的过程:

  • 用户通过我的站点从维基百科请求一个主题(即将是)注意:由于IIS无法处理,我被迫使用querystring参数
  • 检查是否已将格式化的html存储在数据库中,如果已存储,则仅向用户显示
  • 否则,我将执行对wikipedia的web请求
  • 如果需要,解压缩流
  • 执行一系列DOM操作以除去我不需要的东西(并注入我确实需要的东西)
  • 将html存储在我的数据库中以备将来的请求
  • 将html返回到浏览器
  • 因为它依赖于屏幕抓取和DOM操作,所以我试图保持速度,这样我就只需要对每个主题做一次,而不是对每个请求都做一次。以下是我的问题:

  • 有没有更好的缓存方法或其他方法可以帮助我提高性能
  • 我知道asp.net有内置的缓存机制,但它会按照我需要的方式工作吗?我不想每次请求都要从数据库中检索html(相当繁重),但我确实需要存储html,以便每个用户都能获得相同的页面。我只想从维基百科获取一次数据
  • 有什么我可以做的压缩,使它更快地进入浏览器,如果有,浏览器可以处理取消压缩和显示html?或者这甚至不是一个考虑因素。我问这个问题的唯一原因是因为维基百科通过HttpWebRequest发送给我的一些页面以gzip流的形式通过
  • 非常感谢所有建议、指导等


    谢谢

    缓存策略:将HTML写入静态文件,让用户从该文件下载。
    压缩策略:签出。

    您可以尝试使用VaryByParam=topic为页面启用OutputCache。如果多个客户端请求,则在内存中存储页面的副本。当页面不在内存中时,服务器可以从数据库中检索它。OutputCache的美妙之处在于,您甚至可以存储HTML的gzip版本(使用varybyencode)

    如果你对维基百科中的内容进行解压缩有问题,那么不要发送接受编码头。这将迫使维基百科将页面以未压缩的方式发送给您