Foxtable(狐表)用户栏目专家坐堂 → 网页缓存问题


  共有4686人关注过本帖树形打印复制链接

主题:网页缓存问题

帅哥哟,离线,有人找我吗?
ycs5801
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1064 积分:7581 威望:0 精华:0 注册:2009/6/24 9:44:00
网页缓存问题  发帖心情 Post By:2022/5/25 13:00:00 [只看该作者]

使用缓存

一些网页文件,例如css、js、图片文件,很少会频繁更新,为提高效率,可以使用缓存:在一定时间内将文件缓存在客户端,这样客户端再次使用这些文件时,可直接使用缓存文件,无需再次访问服务器下载,以提高效率。

HttpRequest时间有个CatcheTime属性,用于设置缓存时间,单位为秒。

示例

例如希望除html和htm之外的文件,全部在客户端缓存一个小时:

Dim fl As String = "d:\web\" & e.path
If
filesys.FileExists(fl)
    Dim idx As Integer = fl.LastIndexOf(".")
    Dim ext As String  = fl.SubString(idx)
    Select Case ext
        Case ".jpg",".gif",".png",".bmp",".wmf",".js",".css" ,".zip",".rar"
           
e.CacheTime = 3600 '缓存文件一个小时
            e.WriteFile(fl)
            Return
        Case ".html",".htm"
            e.WriteFile(fl)
            Return
    End
Select
End
If

提示:

1、这只是一个示例,实际上静态的网页也应该缓存的。

2、在缓存期内刷新页面(例如在地址栏再次按回车或单击刷新按钮),依然会重新访问服务器下载文件。

 

 

这句静态网页也应该缓存,这个有没有相关示例,应该怎么写这部分代码?


 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109501 积分:557173 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/5/25 13:43:00 [只看该作者]

Dim fl As String = "d:\web\" & e.path
If
 filesys.FileExists(fl)
    Dim idx As Integer = fl.LastIndexOf(".")
    Dim ext As String  = fl.SubString(idx)
    Select Case ext
        Case ".jpg",".gif",".png",".bmp",".wmf",".js",".css" ,".zip",".rar
",".html",".htm"
            
e.CacheTime = 3600 '缓存文件一个小时
            e.WriteFile(fl)
            Return

    End 
Select
End
 If

 回到顶部
帅哥哟,离线,有人找我吗?
ycs5801
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1064 积分:7581 威望:0 精华:0 注册:2009/6/24 9:44:00
  发帖心情 Post By:2022/5/25 14:09:00 [只看该作者]

这样是不是就可以缓解多人同时访问网站,造成多并发的服务器不稳定。


 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109501 积分:557173 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/5/25 14:32:00 [只看该作者]

对于静态的网页和文件有提升。

如果多并发,也可以考虑使用nginx,然后开启多个服务端项目,做负载平衡了

 回到顶部
帅哥哟,离线,有人找我吗?
ycs5801
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1064 积分:7581 威望:0 精华:0 注册:2009/6/24 9:44:00
  发帖心情 Post By:2022/5/25 14:50:00 [只看该作者]

以下是引用有点蓝在2022/5/25 14:32:00的发言:
对于静态的网页和文件有提升。

如果多并发,也可以考虑使用nginx,然后开启多个服务端项目,做负载平衡了

这个nginx怎么配置呢?有没有实例?开启多个服务端项目什么意思呢?


 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109501 积分:557173 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/5/25 14:55:00 [只看该作者]

nginx网上搜索了,大把教程的。

开启多个服务端项目就是比如发布的publish目录,复制多份,如:publish1、publish2。然后publish、publish1、publish2里的程序全部打开运行,以不同的端口启动服务

 回到顶部
帅哥哟,离线,有人找我吗?
ycs5801
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1064 积分:7581 威望:0 精华:0 注册:2009/6/24 9:44:00
  发帖心情 Post By:2022/5/25 15:26:00 [只看该作者]

nginx基本都是实现动静分离,而weui生成的网页都是动态的html,如果使用nginx,是什么思路能把weui的动态生成网页转为静态的?

 回到顶部
帅哥,在线噢!
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109501 积分:557173 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/5/25 15:32:00 [只看该作者]

动静分离只是其中一种用法。多并发的话需要的是负载均衡。

如果页面内容是固定的,也可以使用wb.Save("d:\web\tst.html")保存为静态html文件使用

 回到顶部
帅哥哟,离线,有人找我吗?
ycs5801
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1064 积分:7581 威望:0 精华:0 注册:2009/6/24 9:44:00
  发帖心情 Post By:2022/5/25 15:36:00 [只看该作者]

页面中哪些内容属于不固定的?

 回到顶部
帅哥,在线噢!
有点蓝
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109501 积分:557173 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/5/25 15:46:00 [只看该作者]

比如表格等通过后台数据生成的页面

 回到顶部