首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > CAD教程 >

silverlight版本更新有关问题

2012-03-29 
silverlight版本更新问题求助VB.NET codePrivate Function CheckNeedDownload() As BooleanDim store As I

silverlight版本更新问题求助

VB.NET code
Private Function CheckNeedDownload() As Boolean        Dim store As IsolatedStorageFile = IsolatedStorageFile.GetUserStoreForApplication()        Dim path As String = System.IO.Path.Combine(strCacheDirectory, strCacheXap)        '检查需要下载的文件在当前缓存区域是否已经存在        If store.DirectoryExists(strCacheDirectory) = False Or store.FileExists(path) = False Then            Return True        Else            Dim stream As IsolatedStorageFileStream = store.OpenFile(path, FileMode.Open, FileAccess.Read)            If stream.Length.Equals(g_NewXapSize + 1) = False Then                stream.Close()                ClearExternalXapCache()                Return True            Else                stream.Close()                Return False      'False  2012-2-22 zfy 由False改为True 不检查Xap包大小,直接下载            End If        End If    End Function

silverlight新版Xap包字节数存放在数据库,读出来与缓存中的Xap包字节数比较,如果不一致,则下载,一致则直接读缓存中的Xap包,为什么有的客户端需要手动清除缓存才能使用新版本,这个有没有一劳永逸的办法,不用手动清除缓存。也想不检查Xap包大小,直接下载,但有两个问题,一是不能同时打开两个相同的silverlight程序,二是每次都下载,速度慢,影响用户体验,网上看了一个用版本解决方案,http://www.cnblogs.com/yjmyzz/archive/2011/08/07/2130308.html

[解决办法]
可以考虑对Xap包添加一个版本号,然后在独立存储中增加一个缓存区存放最近的一个Xap包版本。如果版本相同则不更新,否则强制更新。
[解决办法]
类似IIS之类的正规的web服务器软件,都有这类功能,当一个文件没有改变时,它就会返回304信息给浏览器端,让浏览器端去使用它本地的缓存文件。所以你用不着写程序去比较什么文件大小,根本不应该让操作流程流到你的程序中,而应该在web服务器那一层就解决了。

解决方法就是:如果对于某个文件,你想让客户端可以使用缓存,那么你不要将这个文件上传到网站上更新,这就行了。

热点排行