• 关于

    字符字段可以做什么

    的搜索结果

问题

关于数据库字段限制问题

小旋风柴进 2019-12-01 20:13:53 860 浏览量 回答数 1

问题

为什么我不能使用Angular NgModel限制输入的值长度?

养狐狸的猫 2019-12-01 20:00:51 7 浏览量 回答数 0

回答

你说的没错 就是额外的开销 但是表单注入和前台显示时候的转义都必须做 唯一能节约点时间的就是如果碰到非法的字段直接报500错误而不是试图当正确字段去处理他。另外我不太明白为什么这种数据过滤会增大数据库 只要escape那些引起代码意思变化的字符就可以了 中文这些又不需要处理

蛮大人123 2019-12-02 01:45:00 0 浏览量 回答数 0

阿里云试用中心,为您提供0门槛上云实践机会!

0元试用32+款产品,最高免费12个月!拨打95187-1,咨询专业上云建议!

回答

Redis 的特性决定了它本身就不适合做统计方面的操作。因为没有像 SQL 一样的结构化查询语言。这里为你提供一种解决思路,但是需要修改你的数据组织方式:在 redis 中,如果的确有统计的需求,可以使用 SortedSet 有序集合。有序集合中每个 key 对应一个 score,可以根据 score 来排序取值。举个例子:redis> ZADD age 10 jack (integer) 0 redis> ZADD age 15 tom (integer) 0 redis> ZADD age 25 peter (integer) 0上面的代码为 age 这个有序集合插入了三条数据,以三人的 age 作为 score。如果你想统计年龄区间在10-20之间的,如下所示:ZRANGEBYSCORE age 10 20如果说你要存储的数据不是简单的字符串,没有办法直接作为 key 来存储,可以有以下两种方案解决:1.将数据转为 json 格式的字符串作为 key,取出时再将 json 字符串还原为代码可支持的格式。比如在 python 中就可以使用 json.dumps 将字典转为字符串,从 redis 取出时再使用json.loads还原。2.以 id 作为 key,然后再使用另外的 hash 或者其他数据结构来存储实际用户信息。这样就需要先根据统计字段查出 id,再根据 id 去查完整信息,需要有两次查询。但是以上的解决方案只适用于你只有一个用来统计的字段,比如你提到的年龄。如果你有多种统计需求,理论上来说肯定也有解决方案,但是我觉得你应该考虑一下是否真的需要使用 redis 来完成这个工作。毕竟 redis 的使用场景限制了它无法做像 SQL 一样复杂多样的统计。你可以考虑一下其他的 NoSQL,比如 mongodb。根据你的使用场景选择工具才是最明智的,而不是手里有把锤子就看什么都是钉子。

爵霸 2019-12-02 02:00:45 0 浏览量 回答数 0

回答

在使用了salt string之后,md5其实足够可靠固定的私钥来做salt其实不好,一旦私钥泄漏之后就很麻烦,而且最痛苦的其实是你不知道你到底有没有泄漏用户的密码字符串作为salt是更好的办法签名字符串:$sign = md5('$user_id+$user+_password[+浏览器UA[+IP地址[...]]]');里面爱加什么你可以自己发挥存储到cookie里面的字符串为$token = $user_id.','.$sign;然后你需要对用户记录做一个服务器端的缓存,缓存通过用户编号查询,里面至少要包含用户的密码每次用户请求时,都会从缓存里面去拿他的密码来重新计算数字签名做比对这样的好处有:不存在私钥泄漏的问题,即使出问题也不会影响所有用户slat字符串泄漏就等同于用户的密码泄漏,逻辑上是严密的即使有人持有$token字符串,只要用户一修改密码,老的$token就马上失效了在此基础上还可以有其它的发挥,比如用户记录设计专门的一个字段:salt,每次用户登录成功时就生成一个随机字符串更新到salt内,数字签名计算用`// 记得把$user_salt也放到缓存里$sign = md5('$user_id+$user_password+$user_salt+...');`这样一来,每次用户重新登录之后,之前的$token一定会失效,不但安全性更高,而且还实现了每次只允许一个人登录使用最后,记得在用户修改密码之后更新你的缓存

落地花开啦 2019-12-02 02:51:46 0 浏览量 回答数 0

回答

什么是Referer Referer是HTTP Header的一部分,当浏览器向Web服务器发送请求时,一般会带上Referer,告诉服务器从哪个页面链接过来的。 Referer的作用 防盗链。比如,网站访问自己的图片服务器,图片服务器取到Referer来判断是不是自己的域名,如果是就继续访问,不是则拦截。 数据统计。比如,统计用户是从哪里链接过来访问的。 Referer为空 空Referer指的是HTTP请求中Referer头部的内容为空,或者HTTP请求中不包含Referer头部。如果有下面两种情况则Referer为空。 当请求并不是由链接触发产生。比如,直接把地址输入地址栏里打开页面。 从https页面上的链接访问到非加密的http页面时,在http页面上是检查不到Referer的。 在防盗链设置中,允许空Referer和不允许空Referer的区别如下。 在防盗链的白名单设置中,如果指明白名单中包含空的Referer,那么通过浏览器地址栏直接访问该资源URL是可以访问到的。 如果不指明需要包含空的Referer,那么通过浏览器直接访问也是被禁止的。 OSS防盗链 OSS防盗链是通过Referer来实现的,所以也简称为Refer或refer。 OSS防盗链配置 提示:Referer详细的介绍及配置请参见防盗链。 OSS防盗链通过在控制台或SDK设置Bucket属性来配置。 OSS防盗链配置内容包括以下两部分内容。 是否允许Referer字段为空的请求访问。 Referer字段白名单。 OSS防盗链配置中需要注意以下几点。 用户只有通过URL签名或者匿名访问Object时,才会做防盗链验证。如果请求Header中有Authorization字段时,不会做防盗链验证。 一个Bucket可以支持多个Referer参数,这些参数之间由,分隔。 Referer参数支持通配符*和?,详细解释可参考通配符说明。 用户可以设置是否允许Referer字段为空的请求访问。 白名单为空时,不会检查Referer字段是否为空(不然所有的请求都会被拒绝)。 白名单不为空,且设置了不允许Referer字段为空的规则,则只有Referer属于白名单的请求被允许,其它请求(包括Referer为空的请求)会被拒绝。 如果白名单不为空,但设置了允许Referer字段为空的规则,则Referer为空的请求和符合白名单的请求会被允许,其它请求都会被拒绝。 Bucket的三种权限(private、public-read、public-read-write)都会检查Referer字段。 通配符说明。 星号*:代替0个或多个字符。如果正在查找以AEW开头的一个文件,但不记得文件名其余部分,可以输入AEW*,查找以AEW开头的所有文件类型的文件,如AEWT.txt、AEWU.EXE、AEWI.dll等。要缩小范围可以输入AEW*.txt,查找以AEW开头,并以.txt为扩展名的文件,如AEWIP.txt、AEWDF.txt。 问号?:代替一个字符。如果输入love?,查找以love开头的一个字符结尾文件类型的文件,如lovey、lovei等。要缩小范围可以输入love?.doc,查找以love开头,任意一个字符结尾,并以.doc为扩展名的文件,如lovey.doc、loveh.doc。 典型配置说明如下。 所有请求都可以访问。 空Referer:允许Referer为空。 Referer列表:空。 带有规定的Referer请求或不带Referer的请求才能访问。 空Referer:不允许Referer为空。 Referer列表:http://.oss-cn-beijing.aliyuncs.com,http://.aliyun.com。 常见错误及排除 错误一:配置防盗链后用curl命令还是能获取到视频文件 错误原因 可能开启了CDN并且没有配置CDN中的Referer。 解决方法 检查是否开启了CDN。CDN的Referer设置不能为空,且防盗链名单需与OSS一致。 调试OSS的Referer时,请先排除CDN的影响。且优先调试OSS的Referer,再调试CDN的Referer。 错误二:当Referer配置错误时HTTP提示”403“错误且OSS提示“You are denied by bucket referer policy.”错误 错误原因 通常有以下两种主要原因。 Referer为空,请求Header中没有Referer字段或者Referer字段为空。 Referer不在规定范围或者格式错误。 解决方法 建议您清空浏览器缓存后再进行调试。如果仍然存在异常错误,则参考如下步骤进行解决。 Referer为空时,通过在OSS控制台选择 Bucket > Bucket属性 > 防盗链 中配置Referer。需要注意OSS的Referer只支持白名单,暂时不支持黑名单。 Referer不在规定范围或者格式错误时,需要确认是否配置http://或者https://,并更正Referer的配置范围,比如a.aliyun.com和b.aliyun.com,匹配于http://.aliyun.com或http://?.aliyun.com。domain.com匹配于http://domain.com,而不是http://.domain.com。 Referer报错一般是站点类应用,浏览器中可以查看Header的Referer。如Chrome浏览器,按键盘F12打开 开发者工具,在 Network 中查看相应元素的Header。 OSS返回的错误可以通过抓包获取。如抓包工具Wireshark,筛选器可以指定为host bucket-name.oss-cn-beijing.aliyuncs.com。

剑曼红尘 2020-03-26 18:53:54 0 浏览量 回答数 0

回答

防彩虹表就可以了 比如全局用urandom生成一个48字节的salt 每个用户用注册时间生成一个20多字节的salt 再加用户本身的密码 做下sha512 够严实了  ######AES+TwoFish######前段时间做了个小系统,我把密码字段保存成:md5(encode(lower(name)::bytea, 'base64') || encode(password, 'base64')) ######每一个密码设计一个对应的Salt,加密时将明文和Salt连接再加密存储######discuz就是用的这个方法.###### 我们数据库密码现在也做了base64的转换###### 昨天刚刚写一个密码存储的代码,介绍一下,密码->DES(密码的MD5字符做密钥)->置换库(自家保存)->Base64->MD5,字段保存.###### 我直接用的sha256处理了一下,别的暂时还没弄明白是为什么,像  置换、 salt等等方法是什么意思呢######求csdn密码库,我注册邮箱忘了,无法登陆天涯删帖

kun坤 2020-06-06 11:44:02 0 浏览量 回答数 0

问题

如何实现OSS防盗链(Referer)配置及错误排除?

青衫无名 2019-12-01 22:00:49 1353 浏览量 回答数 0

问题

如何使用mySQL replace()替换多个记录中的字符串?

保持可爱mmm 2020-05-10 23:11:25 0 浏览量 回答数 1

问题

什么是元数据

云栖大讲堂 2019-12-01 21:30:00 1152 浏览量 回答数 0

回答

在日志服务数据投递MaxCompute场景下,需要在MaxCompute表分区维度上检查数据完整性,即MaxCompute表中某个分区中数据是否已经完整。 使用保留字段__partition_time__作为表分区列,如何判断分区数据是否已完整 __partition_time__由日志的time字段计算得到,由日志真实时间按照时间格式字符串向下取整得出。其中,日志真实时间既不是投递数据的时间,也不是日志写入服务端时间。 举例:日志时间为2017-05-19 10:43:00,分区字段格式字符串配置为yyyy_MM_dd_HH_mm,每1小时投递一次。那么:无论该日志是什么时刻写入服务端,这条日志会存入MaxCompute的2017_05_19_10_00分区,计算细节参考MaxCompute投递字段说明。 如果不考虑写入了历史数据等问题,在日志实时写入的情况下,有以下两种方法判断分区数据是否已完整: 通过控制台或API/SDK判断(推荐) 使用API、SDK或者控制台获取指定Project/Logstore投递任务列表。例如API返回任务列表如下。控制台会对该返回结果进行可视化展示。 { "count" : 10, "total" : 20, "statistics" : { "running" : 0, "success" : 20, "fail" : 0 } "tasks" : [ ... { "id" : "abcdefghijk", "taskStatus" : "success", "taskMessage" : "", "taskCreateTime" : 1448925013, "taskLastDataReceiveTime" : 1448915013, "taskFinishTime" : 1448926013 }, { "id" : "xfegeagege", "taskStatus" : "success", "taskMessage" : "", "taskCreateTime" : 1448926813, "taskLastDataReceiveTime" : 1448930000, "taskFinishTime" : 1448936910 } ] } taskLastDataReceiveTime表示该批任务中最后一条日志到达服务端时的机器系统时间,对应控制台的接收日志数据时间,根据该参数判断时间为T以前的数据是否已经全部投递到MaxCompute表。 如果taskLastDataReceiveTime < T + 300s(300秒是为了容忍数据发送服务端发生错误重试)以前的每个投递任务状态都是success,说明T时刻的数据都已经入库。 如果任务列表中有ready/running状态任务,说明数据还不完整,需要等待任务执行结束。 如果任务列表中有failed状态任务,请查看原因并在解决后重试任务。您可以尝试修改投递配置,以解决投递问题。 通过MaxCompute分区粗略估计 比如在MaxCompute中以半小时做一次分区,投递任务为每30分钟一次,当表中包含以下分区: 2017_05_19_10_00 2017_05_19_10_30 当发现分区2017_05_19_11_00出现时,说明11:00之前分区数据已经完整。 该方法不依赖API,判断方式简单但结果并不精确,仅用作粗略估计。 使用自定义日志字段作为表分区列,如何判断分区数据已完整 比如日志中有一个字段date,取值:20170518,20170519,在配置投递规则时将date列映射到表分区列。 这种情况下,需要考虑date字段与写入服务端时间差,结合使用保留字段方法,根据接收日志数据时间判断。 投递成功,但MaxCompute表数据有缺失,应如何解决 MaxCompute投递任务状态成功,但表中数据缺失,一般有以下原因: 表分区列映射的日志服务字段的名称不存在。此时投递过去的列值为null,而MaxCompute表不允许分区列值为null。 表分区列映射的日志服务字段的值包含/或其他特殊符号。MaxCompute将这些字符作为保留字,不允许在分区列中出现。 遇到这些情况时,投递策略为忽略异常的日志行,并继续任务,在该次任务中其它分区正确的日志行可以成功同步。 因此,在配置字段映射不当的情况下,可能出现任务成功但是表中缺少数据的情况,请修改分区列配置。建议使用保留字段__partition_time__作为分区。 更多细节请参考MaxCompute投递相关限制说明。

保持可爱mmm 2020-03-26 23:26:49 0 浏览量 回答数 0

回答

数组是一个容器,当它被创建后,不仅元素的类型是确定的,元素的个数也是确定的。换句话说,数组的长度是确定的,不可能再变长或者变短。因此,数组可以使用一个字段(length)来表示长度。 创建数组的方法有两种,这个应该大家都知道了。一种是通过 new 关键字创建指定长度后再赋值,另外一种是通过 {} 直接进行初始化。 // newint[] arr = new int[4]; arr[0] = 0; arr[1] = 1; arr[2] = 2; arr[3] = 3;//  {}int [] arr1 = {0, 1, 2, 3}; 但不管用哪种方法,数组的长度是可以明确知道的。并且不会再变长或者变短(学不了孙悟空的金箍棒)。 由于数组也是对象,所以以下代码是合法的。 那为什么数组不单独定义一个类来表示呢?就像字符串 String 类那样呢? 一个合理的解释是 Java 将其隐藏了。假如真的存在一个 Array.java,我们也可以假想它真实的样子,它必须要定义一个容器来存放数组的元素,就像 String 类那样。 public final class String     implements java.io.Serializable, Comparable<String>, CharSequence {     /** The value is used for character storage. */     private final char value[]; } 但这样做真的有必要吗?为数组单独定义一个类,是不是有点画蛇添足的意味。那既然数组没必要定义成一个类,也就没有必要再定义一个 length() 方法来获取数组的长度了,直接用 length 这个字段就可以了,不是吗? 那为什么字符串 String 类会有 length() 方法呢?来看一下源码就明白了。     /**     * Returns the length of this string.      *The length is equal to the number of Unicode      * code units in the string.      */    public int length() {         return value.length;     } length() 方法返回的正是字符数组 value 的长度(length),value 本身是 private 的,因此很有必要为 String 类提供一个 public 级别的方法来供外部访问字符的长度。 总结一下,Java 获取数组长度的时候用 length,获取字符串长度的时候用的是 length()。

游客pklijor6gytpx 2019-12-27 09:41:57 0 浏览量 回答数 0

问题

OpenSearch的下拉提示有什么功效?

轩墨 2019-12-01 20:56:08 965 浏览量 回答数 0

问题

已知问题汇总,求解答

turboyang 2019-12-01 21:37:43 3272 浏览量 回答数 1

问题

索引查询分析是什么意思?

轩墨 2019-12-01 21:57:28 1408 浏览量 回答数 0

问题

如何选择拆分键

猫饭先生 2019-12-01 21:20:53 1364 浏览量 回答数 0

回答

技术小白一枚,说说自己的看法,见笑。 服务器有一个临时表,保存用户对应的重置密码申请,有唯一标识(用户名或邮箱)。根据唯一标识查询对应用户名中是否有30分钟内,未使用的重置密码申请验证码(在发送时,随机生成,保存临时表并发送邮件)。然后在确认验证码的时候,去后台验证一下就OK了。 ######您好,谢谢您的回答,但是还是有点不解需要您指点,就是说怎么判断是30分钟内呢?数据库表怎么创建呢?而且还会让他过期以后可以删除呢?本人只创建过那种简单的表,没有创建过能够过期删除的表,望不吝赐教!######回复 @张贵成 :您好,谢谢您的回答,但是还是有点不解需要您指点,就是说怎么判断是30分钟内呢?数据库表怎么创建呢?而且还会让他过期以后可以删除呢?本人只创建过那种简单的表,没有创建过能够过期删除的表,望不吝赐教!######回复 @leo108 : 我的临时表指的是一个普通表,只不过里面的数据都是临时的,过期以后可以删除的内种。里面只需要缓存一下可用的验证码便可!######就是普通表,不要加“临时”######字段大致有主键,验证码,对应的账号(或唯一的邮箱),生成时间(每次判断当前时间是否超过30分钟,超过自动删除本记录)。然后再加一个后台任务定时(或是每天)清除垃圾数据,这样就OK了哇。还有什么木有说到的咩?######使用的数据库是Mysql数据库。###### 两个字段 生成的验证码 和 生成的时间,如果验证就匹配。 如果正常登陆就删除这两个字段。 ######回复 @双人鱼XKQ : 如果是字段就为空,如果是一个数据,就删除。######如果验证就匹配。 如果正常登陆就删除这两个字段。 这两句话有点不懂,望详细解释一下,谢谢!###### 放在数据库里,在数据库里弄 ######回复 @双人鱼XKQ : 邮箱、验证码、失效时间放在数据库里,用户输入后再从数据库里比对啊######回复 @hanzhankang : 小白一个,望耐心指点,感激不尽!定虚心求教。说个详细的思路,谢谢!###### @双人鱼XKQ 需要啥字段设计啊,这个很简单啊######我知道是放在数据库里面弄,具体的是在数据库里面怎么弄?######邮箱,验证码,生成时间。来验证是,用当前时间和生成时间对比,看时间是否超过30分钟,验证码对不对,对就更改验证信息为通过,并且删除验证的数据。大概简单的就这样。还有可以用k v缓存,就不需要用数据库######放在缓存中就好了,设置缓存时间 ,就可以了。 ###### 那种用验证码可以,用一次性url也可以的。 不知道一次性url+验证码会不会更好点? ######点击找回密码,后台生成随机字符串,以邮箱为key,随机字符串为value存到memcache,memcache失效时间设置为30分钟,此时异步发送邮件,邮件地址中包含邮箱和随机字符串。当访问邮箱中的url时,我们去校验是否匹配,如果匹配,则可以跳转到修改密码页面。###### 引用来自“张贵成”的评论 技术小白一枚,说说自己的看法,见笑。 服务器有一个临时表,保存用户对应的重置密码申请,有唯一标识(用户名或邮箱)。根据唯一标识查询对应用户名中是否有30分钟内,未使用的重置密码申请验证码(在发送时,随机生成,保存临时表并发送邮件)。然后在确认验证码的时候,去后台验证一下就OK了。 这个简单呀,临时表里面有个字段就是生成时间,然后用户界面输入验证码点击提交的时候,根据当前时间与临时表内的生成时间做对比,如果超过30分钟,给予提示,未超过30分钟,通过验证。至于过期删除,这个只能人为触发,例如每隔半小时去检索一下临时表的生成时间+30分钟<当前时间的,如果有则删除。表内的字段我能想到的大致有几个:主键、用户ID、验证码、生成时间、状态(用于标注该条记录是否已使用,如果是设计的用完一次直接删除的话,就不用这个字段了)、还有一些其他的,例如邮箱、申请人IP这些不重要的。

kun坤 2020-06-08 11:31:13 0 浏览量 回答数 0

回答

Django代码注意 1、模板标签里面 extend和include是冲突的,有了extend,include无法生效,原因:是底层渲染独立机制设计导致。 2、#coding:utf-8 这句只有放在代码文件第一行才能生效,放在注释字符串后面可能会失效。 3、由于前端发展而导致的Post请求Rest化和Django原生的技术设施层简化还有事务封装前移,由此产生的结果是业务层完全可以放在views里面。同事Restful化的好处就是可以把跨业务模块调用放在前端,保证了后端模块之间的正切 4、有用户自生成富文本内容的页面上最好不要放置带XSRF的POST表单,前者可能会窃取后者的Token信息。 5、在template里面的==这一类比较逻辑运算符号两边必须有空格,否则影响模板解析 6、form.is_valid内部逻辑中的Clean_data处理中抛出的异常不会向外传递,只会变成form.is_valid()返回false. 7、Django的业务层和View层怎么切分这个问题,一个简单的方法就是给业务层传递什么层级的参数,个人觉得传递验证过的form比较合适。 8、多级if else的两个简化技巧:1是直接用except处理;2是该半路return的直接return掉,这样做虽然不符合过程编程函数设计原则,但是代码相对简洁了很多。 9、Ubuntu生产环境下不能Print Unicode中文,否则会导致error. 10、因为DJango的500机制和事务机制,所以Django的View层对异常处理代码的依赖比较弱。 11、model form定义:没有在前端页面出现的字段,一定要exclude掉或者Null了,不过Null会影响默认值,所以最好的方法是Exclude掉,否则即便blank掉,也会导致form存储时出错。因为表单中字段不出现会把默认值覆盖成Null。 比exclude更方便的定义方式是定义fields元信息,这样model添加不用的字段不用跑来重新更新form定义 12、数据库存时区性数据的格式化显示一定要放在template里面用date之类的过滤器操作,如果用datetime的striftime直接格式化,会导致时区性数据丢失,出来的时间成了格林威治时间值了,如果在代码中strifttime处理,可以先用django.utils.timezone.localtime方法处理一下,这样出来的时间才是正常的 13、Django调试中的一个问题:众所周知,runserver启动,改动代码,服务会重启,但是改动自定义标签代码,服务是不会重启的。 14、form验证的errors在比较旧的版本里面是没有文本信息,前一段时间看文档,发现新版本有对errors有所加强,比较好用的比如as_json()和as_text(),两个方法,我在比较旧的版本中是自己写个函数对errors对象做解析生成反馈文本信息。 15、ManyToMany字段的through不能add or remove,为了扩展性的考虑,建议默认都加上through,可以为中间关系表加个date_added字段,顺便都加上unique_together约束,不过用through是有缺陷的:写操作略麻烦。那么如果你没加through,准备改成加through的,应该怎样最小改动的操作哪,应该是先把这个ManyToMany字段删除掉,并且migrate生效,然后再加一个有through的ManyToMany字段,当然了后台的数据还的备份重生效一次。这应该算是目前Django Migration特性的一个缺陷。 答案来源网络,供参考,希望对您有帮助

问问小秘 2019-12-02 03:02:13 0 浏览量 回答数 0

回答

最好一个表,要不然,会员和其他表的关联会出问题,比如会员买东西,会员发表评论,你总不能把评论表也搞成两个,购买记录也搞成两个表吧?后患无穷######搞个字段用来区分会员类型不就OK了?######一个表   用一个字段区分  线下,线上    你线上也需要注册的? 也就是说你的表的会员都有  帐号,密码字段    你在加个 初始密码是否使用 的字段就完了 至于你说的初始密码的逻辑 //登录 if(线下){ if(!初始密码是否使用){ 初始密码是否使用 = true; } } ...执行登录 ######回复 @ZhangKevin2 : 判断不只是js判断,服务端也要判断 js是可以绕过的,除了问题就大条了######那我就登录的时候 判断 写个正则,凡是DOWN_开头的 帐户名ID都是线下的,否则就执行普通线上注册的用户登录? 然后线上普通注册的 在注册的时候我在写个JS 限制不能以DOWN_开头注册就行了? 那线下的帐户名和初始密码 是用EXCEL直接导入数据库会员表里?###### 引用来自“NikoG”的答案 搞个字段用来区分会员类型不就OK了? 是啊,这个不就解决了吗?然后在付款的时候判断一下不就得了吗?反正那些行为线下会员优惠点的话,直接判断一下不就得了吗? ######楼主考虑的复杂了吧,你这个情况就如上面提到的,用一个字段识别一下即可。另外,你最后说的VIP和普通会员,与你现在的情况其实是一个性质的。 就和论坛中有不同的用户组一样,不同的组不同的权限,而且也强烈建议你使用权限来区分各用户组所能进行的操作,这样也有利于你日后的扩展。给你一个参考的基础库结构: ID:int(索引) UserID:nvarchar(用户名) Password:nvarchar(密码) Int:int(boolean,是否完成初始化) Group:int(用户组)(另建用户组表,定义各组的权限) Rebate:int(折扣,也可在用户组中定义折扣率,此处的折扣率可用做针对单个用户的私有权限) ######回复 @psaux : 当然CHAR了,MD5之后固定的位数######password直接用char吧,事先确定了使用的hash加密方式和位数。######因为就一个线下和线上 2种情况,所以我觉得没必要搞个用户组来单独搞权限操作######如果线上会员和线下会员区别很大,建议分开表。只是要区分线上线下而已,可以只用一个字段识别。线下会员首次登录需要改密码使用登录次数字段+判断初始密码是否未更改来实现######回复 @ZhangKevin2 : 使用SQL的Left Join就可以。会员类型(线上线下)放置详细表######THANS,登录次数字段还没用过。。 其实还有一点很麻烦,一般会员,如果想登录块点都是分2个会员表,一个是 帐号和密码会员表用户登录,与之相关联的是会员详细信息表,比如会员的个人资料等等。 如此 如果结合线上线下的话 更纠结。。###### 显然分成两个表比较好 而且分成两个系统开发测试也快。 ###### 显然一个表,会员是一个对象,线上线下只是这个对象的属性。你的需求和苏宁电器的会员很类似,苏宁7000多万会员也分线下pos端申请和线上易购网申请,我们用的是一个表,这里存在一个线上线下同步问题,如果会员量小不用考虑都指向一个表就行。另外我们会根据地理区域分库,也就是水平分割,否则检索太慢。首次登陆改密码这个很多会员都有这样的需求,也可以用属性来区别。另外我说的会员一个表是逻辑上的一个表,由于会员有很多属性,都放一个表会影响性能,可以根据业务类型进行垂直切割。 ###### 引用来自“风飞雪”的答案 显然一个表,会员是一个对象,线上线下只是这个对象的属性。你的需求和苏宁电器的会员很类似,苏宁7000多万会员也分线下pos端申请和线上易购网申请,我们用的是一个表,这里存在一个线上线下同步问题,如果会员量小不用考虑都指向一个表就行。另外我们会根据地理区域分库,也就是水平分割,否则检索太慢。首次登陆改密码这个很多会员都有这样的需求,也可以用属性来区别。另外我说的会员一个表是逻辑上的一个表,由于会员有很多属性,都放一个表会影响性能,可以根据业务类型进行垂直切割。 求详细点。。。  之前做的都是普通会员和VIP会员,ECSHOP二次开发等等,这次虽然项目不大也不难,但我还是想尽力做完善点,关键是我们公司策划烂到家了 天天改需求,线上线下会员肯定会有区别,但以后有多大区别还不晓得。 最烦的是有区别又有联系,如果分2个表 以后还要联表。 有些业务处理也麻烦。但如果放在一个表里,2种会员字段数也不一样,线上可能就5个,线下可能还要身份证什么的因为是发卡一对一发展现实中的会员,而且线下会员安全性要求更高 ###### 引用来自“ZhangKevin2”的答案 引用来自“风飞雪”的答案 显然一个表,会员是一个对象,线上线下只是这个对象的属性。你的需求和苏宁电器的会员很类似,苏宁7000多万会员也分线下pos端申请和线上易购网申请,我们用的是一个表,这里存在一个线上线下同步问题,如果会员量小不用考虑都指向一个表就行。另外我们会根据地理区域分库,也就是水平分割,否则检索太慢。首次登陆改密码这个很多会员都有这样的需求,也可以用属性来区别。另外我说的会员一个表是逻辑上的一个表,由于会员有很多属性,都放一个表会影响性能,可以根据业务类型进行垂直切割。 求详细点。。。  之前做的都是普通会员和VIP会员,ECSHOP二次开发等等,这次虽然项目不大也不难,但我还是想尽力做完善点,关键是我们公司策划烂到家了 天天改需求,线上线下会员肯定会有区别,但以后有多大区别还不晓得。 最烦的是有区别又有联系,如果分2个表 以后还要联表。 有些业务处理也麻烦。但如果放在一个表里,2种会员字段数也不一样,线上可能就5个,线下可能还要身份证什么的因为是发卡一对一发展现实中的会员,而且线下会员安全性要求更高 建议一个,如果按你的思路以后如果手机可以注册,为了区别手机注册的还要建个会员表?如果会员系统提供接口给别的系统用,你还要根据会员号去不同的表里查找?显然这样会给系统开发带来不必要的麻烦,这些一个字段就可以解决。现在存储设备如此便宜,为了减少系统复杂而浪费些空间非常值得。不同注册方法的会员字段不同,没有值得让它空着好了,不要太完美了。我们很多表都冗余了浮点和字符的字段,因为需求总是不断变化,时不时的要增加字段,这种冗余字段的方法带来了很多方便。设计系统和表结构首先一个原则就是尽可能的简单,然后再考虑性能最后考虑空间问题。如果会员有上百万建议切割表,将不常用的字段放在另一张表中。 一些拙见,不足之处还望不吝赐教。

kun坤 2020-06-08 16:18:16 0 浏览量 回答数 0

回答

存储在OSS上的文件,如何设置防盗链功能? 为了防止用户在OSS上的数据被其他人盗链,OSS支持基于HTTP header中表头字段referer的防盗链方法。 目前,只有通过OSS的控制台( http://i.aliyun.com/dashboard/instance?type=oss)可以对一个bucket设置referer字段的白名单和是否允许referer字段为空的请求访问。    例如,对于一个名为mydata的bucket,设置其referer白名单为 http://www.aliyun.com。则所有referer为 http://www.aliyun.com的请求才能访问mydata这个bucket中的Object。    细节分析: 1) 用户只有通过 URL 签名或者匿名访问 Object 时,才会做防盗链验证。请求的 Header 中有“Authorization”字段的,不会做防盗链验证。 2) 一个 bucket 可以支持多个 referer 参数,这些参数之间由“,”号分隔。 3) Referer 参数支持通配符“*”和“?”。 4) 用户可以设置是否允许 referer 字段为空的请求访问。 5) 白名单为空时,不会检查 referer 字段是否为空(不然所有的请求都会被拒绝)。 6) 白名单不为空,且设置了不允许 referer 字段为空的规则;则只有 referer 属于白名单的请求被允许,其他请求(包括 referer 为空的请求)会被拒绝。 7) 如果白名单不为空,但设置了允许 referer 字段为空的规则;则 referer 为空的请求和符合白名单的请求会被允许;其他请求都会被拒绝。 8) Bucket 的三种权限(private,public-read,public-read-write)都会检查 referer字段。       星号“*”: 可以使用星号代替0个或多个字符。如果正在查找以AEW开头的一个文件,但不记得文件名其余部分,可以输入AEW*,查找以AEW开头的所有文件类型的文件,如AEWT.txt、AEWU.EXE、AEWI.dll等。要缩小范围可以输入AEW*.txt,查找以AEW开头的所有文件类型并.txt为扩展名的文件如AEWIP.txt、AEWDF.txt。 问号“?”: 可以使用问号代替一个字符。如果输入love?,查找以love开头的一个字符结尾文件类型的文件,如lovey、lovei等。要缩小范围可以输入love?.doc,查找以love开头的一个字符结尾文件类型并.doc为扩展名的文件如lovey.doc、loveh.doc。    不允许Refer为空 可能有些人搞不明白,简单说就是直接在浏览器中输入图片URL,refer为空;从网页中点击打开图片则refer不为空。    注:资料参考API文档地址 http://help.aliyun.com/manual?&helpId=253        细节分析参考资料 http://www.amznz.com/aliyun-oss-referer/ ------------------------- 11.云服务器与OSS 上传文件,流量与请求次数是否收费? 云服务器与OSS之间通过内网地址上传或下载数据,属内网流量,是免费的。 阿里云服务器与OSS之间的内网访问通信地址为: http://oss-internal.aliyuncs.com (需用以上方式进行访问,方可计为内网流量) *  可通过cname方式或三级域名的方式访问文件 云服务器与OSS每次请求所产生的请求次数,不分内外网都会计费。 收费详情请参考 http://www.aliyun.com/product?type=oss#price 12.OSS API返回结果没有JSON格式的吗? 只有XML格式 13. 如何进行大文件上传? 1、有开发能力的用户:可以通过oss API或SDK来操作。 • 5GB以下文件或网络速度好的用户,可以使用PUT object 。 • 5GB以上或网络速度不好并且文件在100M以上的用户推荐使用 Multipart Upload 2、无开发基础客户可下载OSS客户端,请参考 http://bbs.aliyun.com/read.php?tid=95321 14.object怎么改名? 两种方法可以实现:1. 您可以删除原来的文件,上传新命名的文件也能达到改名的效果2. 您可以通过copy objcet 源文件复制成为一个新名字的文件。再把源文件删除即可 15.OSS中可以重命名bucket吗?是否支持object迁移? OSS的bucket暂不支持重命名,若需要其他名称建议您重新创建bucket。 OSS 提供了COPY objcet的功能,您可以将原bucekt下的文件COPY到新bucket即可。 16.咨询一下java sdk中的 ossclient对象是否是线程安全的? java sdk中的 ossclient对象是线程安全的 17.测试版PHP SDK中不能自动检测所需PHP模块,是什么原因? 1.使用phpinfo来查看PHP模块。使用PHPSDK需要配置CURL功能模。具体安装CURL的方法可参考: http://bbs.aliyun.com/read.php?tid=18967 ; 2.您可以下载最新的PHP SDK包。已支持自动检测所需PHP模块 http://www.aliyun.com/product?type=oss#resources 18.比如多个文件object, 直接指定多个object,生成一个url,打包一起下载? 目前oss不支持多个object打包下载。 此需求可以由上层应用逻辑进行处理。OSS服务提供平台级基础资源的存储支持。 19.OSS返回的文件网络路径,域名都是aliyun的吗? 是的。支持CNAME 同时现在支持绑定自己的域名 20.可以给出一个java实现生成url签名的代码示例吗? 生成签名以后的URL的示例代码如下: // Generate a presigned URL Date expires = new Date (new Date().getTime()   1000 * 60); // 1 minute to expire GeneratePresignedUrlRequest generatePresignedUrlRequest = new GeneratePresignedUrlRequest(bucketName, key); generatePresignedUrlRequest.setExpiration(expires); URL url = client.generatePresignedUrl(generatePresignedUrlRequest); System.out.println(url.toString()); 这段代码假定指定bucketName和key的Object已经上传到OSS,用户可以根据修改设定expires,即过期时间。更详细的操作可以参考OSSClient#generatePresignedUrl方法和GeneratePresignedUrlRequest类的帮助。 ------------------------- 21.OSS中url中可以实现授权文件上传吗? Oss中url中授权文件上传可以实现 java版代码示例如下:GeneratePresignedUrlRequest generatePresignedUrlRequest = 1)url中包含签名的好像能够实现文件的下载,阿里云能实现url中授权文件上传吗? new GeneratePresignedUrlRequest(bucketName, key); 2)java版代码示例如下: generatePresignedUrlRequest.setMethod(HttpMethod.PUT); generatePresignedUrlRequest.setExpiration(expires); generatePresignedUrlRequest.addUserMetadata("usermeta", "uservalue"); // If you need to set user metadata URL url = client.generatePresignedUrl(generatePresignedUrlRequest); 22.如何使用JAVA SDK源代码? 您可以使用jd decompiler等Java反编译的工具打开SDK的jar文件,即可以查看全部源代码。 23.为什么bucket下的文件都删除了,却还能查看到占用的空间,并且bucket也删除不了? 请确认您是否使用过UploadMultipart 的功能,如使用过,建议您可以通过UploadsList Multipart 查看是否存在已经被初始化但是未被Complete或者Abort的 Multipart Upload的part。如果有,则需再执行Abort Multipart Upload(来终止上次操作的 Multipart Upload,该命令会自动删除未完成的part)。 因为未完成合并的part,无法形成objcet, 所以通过object list是看不到这些残留的part 但这些都会产生占用空间量。 24.如何使用内网 ? 阿里云云服务器与OSS之间通过Bucket.oss-internal.aliyuncs.com(OSS内网请求域名)的方式请求,所产生的网络流量可享受内网流量免费。 25.无法上传大文件怎么办? 无法向OSS上传大文件。上传1KB以下的文件就可以,2KB以上的文件就不成功,请求发出去就收不到任何响应,直至超时。 解决办法是将本机的MTU设成1470(默认应该是1500) Linux下修改MTU的命令是:(以阿里云服务器oss走内网默认是eth0为例) ip link set dev eth0 mtu 1470 26.OSS支持bucket作为三级域名的访问方式? 三级域名外链访问: http://bucketname.oss.aliyuncs.com/object 例如: http://cloudstorage.oss.aliyuncs.com/pujing.jpg 普通外链访问: http://oss.aliyuncs.com/bucketname/object 例如: http://oss.aliyuncs.com/cloudstorage/pujing.jpg 温馨提示:如果你的bucket里面有下划线"_",那么由于不符合WWW规范,所以无法做为三级域名使用,只能使用普通外链访问方式。 ------------------------- 终于整理出来了 。。。。大半夜的 闹鬼啊 ------------------------- 回 6楼(kashi) 的帖子 谢谢支持 ------------------------- 回 5楼(yyd521) 的帖子 只要能帮到大家   应该的拉 ------------------------- Re:ReOSS官方帮助文档在此归类发布,常见问题基本能在这里找到答案。 引用第10楼pasahu于2013-07-20 20:53发表的 ReOSS官方帮助文档在此归类发布,常见问题基本能在这里找到答案。 : 快点吧 discuz  x2.5  3.0整出来吧。。搞些实在的。 你好  这个我们在做  很快  插件就出来了 ------------------------- 感谢夸奖

asky8 2019-12-02 01:36:19 0 浏览量 回答数 0

回答

是否可以用规则引擎?比如 Drools 。或者可以考虑行为树,看下行为树能否满足需求,行为树多用于游戏AI,但本质上也是各个条件的判断。######回复 @别忘了带红领巾 : 抱歉!python不熟悉。######谢谢,请问python方面有什么好办法吗?###### 你会拼接字符串吧,通过读取condition生成下面的SQL即可 select *, (age > 21 and mony >280.05 and accessTime > '2015-05-31') as cond from 资产表###### 针对你这种情况,需要先写个模板,然后再跟规则配合,比如说有一个字段,首先这个字段的数据类型有N种,你就得先根据数据类型设定N中模板,然后每个数据类型有M种校验方法,你就得再针对每个模板设定好M种方法的执行流程,你这样设定好了之后,每次就很容易调用了; eg:有个数字类型的字段  需要校验该字段的值是否大于某个值 那么你的调用顺序就是:  获取数字类型校验模板,选择校验值大于某个值的方法######谢谢,但是我的是要多个条件,多个逻辑符。目前我想到的是两两判断,但是语句我有些写不出来。###### 条件和结果是动态配置的,数量也不一定。想通过java来实现,还有更好的思路吗?谢谢###### 先  找到  判断的  优先级      哪个要先判断  哪个 最后判断 要明确。  一个判断条件大于3中情况 或者 以后还会添加 就建议所用switch       ######谢谢,但是多个条件之间会存再逻辑运算符呀。###### 是做参数校验还是啥?,看条件最终产生结果,以此类型结果为优先解?######下面有样例,麻烦帮忙看看,谢谢!###### 你需要举个(比较完整的)例子,不知道你具体在说啥######样例在下面,谢谢###### 现在有个数据表 年龄(age : int)资产 (money : number)入网日期 (accessTime : date)20100.002017-03-2420150.002016-05-0721300.002015-04-0321240.002015-07-1522300.002014-12-2121300.002014-12-21 另外,有一张条件表,condition: 字段名(fieldName : varchar)运算符(oper : varchar)阈值 (threshold : varchar )age=21money>280.05accessTime>2015-05-31 条件表condition用来配置过滤用户person的条件,表示要筛选出符合条件 年龄等于21岁 资产大于280.05 入网日期在 2015-06-01之后 的所有用户。符合条件的我有固定输出结果,不符合的也是有错误输出结果。谢谢

kun坤 2020-06-07 16:22:35 0 浏览量 回答数 0

问题

mysql数据库有关上下级的设计方案问题

落地花开啦 2019-12-01 19:55:49 2262 浏览量 回答数 1

回答

详细解答可以参考官方帮助文档          ASP 本身并不是一种脚本语言,它只是提供了一种使镶嵌在 HTML 页面中的脚本程序得以运行的环境,而在ASP中最常用的脚本语言就是VBScript了。虽然ASP的脚本语言很简单,但是要想让一个ASP程序能够最优化的运行也不是一件简单的事情。现在国内的网络带宽很有限,网络十分拥挤,如何使得自己的ASP应用程序能够快速的运行就成为了每一个ASP程序员的梦想了。一. 有关操作数据库的优化方法我们使用ASP最主要的用途就是对数据库进行操作了,如何更快速的完成这些动作呢?1. 不要任意使用“SELECT  *  ......”请尽量拾取您所需要的那些字段,比如,一个Table中有10个字段,但是您只会用到其中的一个字段(name),就要使用“select name from yourtable”,而不是用“select * from yourtable”。如果一个table中有50个字段,您需要用到其中的23个字段的时候,大多数程序员就不一定会用“select name,sex,age... from yourtable”测试证明,尽量拾取您所需要的那些字段来使用select语句将会是您的ASP程序至少加快5%左右。2. 尽可能使用系统存储过程(针对MS SQL Server)。有的时候完成一个读取操作,使用SQL语句和存储过程同样可以完成,但是使用存储过程将会大大加快完成读取操作的速度,也就提高了您的ASP程序运行的速度。3. 注意您的游标使用方法如果您仅仅是对一个table进行读取操作,那么建议您使用forward-only,read-only游标,因为这种游标读取数据库是最为快速的,尤其是在读取数据量很大的情况下。4. 不要打开无用的独立记录集。比如在生成一个树型记录集的时候,我们一般不得不打开父记录集以及对应的子记录集,甚至还有孙记录集,其实您可以使用ADO提供的Data Shaping技术来替代打开多个独立的记录集,那样会加快程序的运行速度。(关于Data Shaping的用法可以参考ADO帮助)5. 记着关闭打开的记录集对象以及连接(Connection)对象。有些程序员总是奇怪为何自己的ASP程序刚开始的时候运行速度很快,可是多运行几遍就越来越慢了呢?甚至出现服务器死机或者频繁宕机的情况。发生这种情况,就很可能是您打开了太多的记录集对象以及连接(Connection)对象而最后却没有关闭他们引起的。使用如下方法进行关闭:YourRecordSet.closeSet YourRecordSet=NothingSet YourConnection=Nothing6. 取得数据库数据的方法。比较您是如何得到记录集的数据的呢?大多数程序员使用YourRecordSet(字段编号),或者YourRecordSet("字段名称"),其实还有其他的使用方法,现在我们就比较一下吧(100条记录):Rs("字段名称")Rs("字段名").ValueRs("字段编号")Set方法数据库回应时间2.967秒2.936秒1.650秒0.586秒2.824秒2.914秒1.611秒0.602秒2.893秒2.943秒1.613秒0.594秒,平均回应时间2.895秒2.931秒1.625秒0.594秒,前三种方法大家都可以看的明白,第四种方法(Set方法)使用:Dim strSQLStrSQL="select name,sex,age from yourtable"Dim rsSet rs=server.createobject("ADODB.RECORDSET")Rs.open strSQL,conn,1,1Const fieldsOrder=2Dim objOrderSet objOrder=rs(fieldsOrder)Response.write objOrder  二. 有关ASP内置对象使用方面的优化方法1. 尽量减少Session对象和Application对象。使用虽然ASP中提供的这两个对象对我们的编程提供了很大的帮助,但是,对这两个对象要合理的使用,不要滥用。因为大量的使用这两个对象将会极大的增大服务器的负担,严重消耗系统资源。也将使您的ASP程序运行慢如老牛。2. 要及时的关闭不再使用的对象(尤其是Session和Application)不及时的关闭您所使用的对象会导致系统运行速度变得缓慢。大多数程序员认为Session和Application可以自动消失,但是系统默认30分钟内访问者如果没有任何操作就自动触发Session_OnEnd和Application_OnEnd事件,但是大量的访问者频繁的读取服务器,服务器将在很长的一段时间保持那些已经没有用的Session,Application对象,如果不及时关闭使用完的Session和Application后果将不堪想象了。关闭的方法是:Set 对象=Nothing三. 合理使用Include文件。我们这里说的是指用<!--#include file="xxx"--形式包含进来的文件,并且文件内容全是ASP程序,也就是说您将一些公共的函数放到一个文件中,并在其他有可能调用其中函数的页面包含进来。建议您不要将所有的函数放到一个包含文件中,因为您在其他页面包含这个文件的时候,服务器端是要进行预编译的,很可能在一个包含文件里面有上百个函数,而您只是想要使用其中的一个函数,这样就严重消耗系统资源。所以,尽可能的分割您的包含文件成为多个小的包含文件。这样也可以提高程序的运行速度。四. 有关VBScript语言方面的优化方法1.尽量使用系统函数代替自己编写的函数比如要想分割一个有规律的字符串("sss,ddd,fff,ggg"),就不必自己使用什么Mid(),Instr等等函数来分析了,其实VBScript就提供了一个函数 Split(),这样既省时间,又提高了速度。2.减少动态数组的使用3.尽可能提前声明变量,提前声明变量会加快程序的解释执行时间。相反,从不声明变量,不但程序难以阅读,整个程序在服务器的执行效率也会大打折扣的。五. 其他方面的优化方法1. 在ASP文件中尽量使用<%%嵌入到HTML标签中,而不要使用Response.write的方式,比如:<html<body<%If ok =1 then %Hello! World!<%End If%就远远比:<%Response.write "<html"Response.write "<body"         If ok =1 thenResponse.write "Hello! World!"         End IfResponse.write "Response.write "%的运行速度要快,尤其是您的ASP文件比较大的情况下。因为,第二种方式增加了服务器端的解释时间,因而也就降低了ASP程序的性能。2. 尽量用一个ASP文件完成一个动作很多人喜欢在一个ASP程序中同时完成诸如添加,删除,查找等等多个动作,不要认为这样是有效的利用了文件,相反,这样做的结果是使得应用程序的运行速度减慢很多。应当将添加,删除,查找等分割成单个的独立的ASP文件来完成。这样使得文件不会过于庞大,降低服务器端解释执行的负担,并且阅读程序也很快捷。如问题还未解决,请联系售后技术支持。

2019-12-01 23:22:04 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档          ASP 本身并不是一种脚本语言,它只是提供了一种使镶嵌在 HTML 页面中的脚本程序得以运行的环境,而在ASP中最常用的脚本语言就是VBScript了。虽然ASP的脚本语言很简单,但是要想让一个ASP程序能够最优化的运行也不是一件简单的事情。现在国内的网络带宽很有限,网络十分拥挤,如何使得自己的ASP应用程序能够快速的运行就成为了每一个ASP程序员的梦想了。一. 有关操作数据库的优化方法我们使用ASP最主要的用途就是对数据库进行操作了,如何更快速的完成这些动作呢?1. 不要任意使用“SELECT  *  ......”请尽量拾取您所需要的那些字段,比如,一个Table中有10个字段,但是您只会用到其中的一个字段(name),就要使用“select name from yourtable”,而不是用“select * from yourtable”。如果一个table中有50个字段,您需要用到其中的23个字段的时候,大多数程序员就不一定会用“select name,sex,age... from yourtable”测试证明,尽量拾取您所需要的那些字段来使用select语句将会是您的ASP程序至少加快5%左右。2. 尽可能使用系统存储过程(针对MS SQL Server)。有的时候完成一个读取操作,使用SQL语句和存储过程同样可以完成,但是使用存储过程将会大大加快完成读取操作的速度,也就提高了您的ASP程序运行的速度。3. 注意您的游标使用方法如果您仅仅是对一个table进行读取操作,那么建议您使用forward-only,read-only游标,因为这种游标读取数据库是最为快速的,尤其是在读取数据量很大的情况下。4. 不要打开无用的独立记录集。比如在生成一个树型记录集的时候,我们一般不得不打开父记录集以及对应的子记录集,甚至还有孙记录集,其实您可以使用ADO提供的Data Shaping技术来替代打开多个独立的记录集,那样会加快程序的运行速度。(关于Data Shaping的用法可以参考ADO帮助)5. 记着关闭打开的记录集对象以及连接(Connection)对象。有些程序员总是奇怪为何自己的ASP程序刚开始的时候运行速度很快,可是多运行几遍就越来越慢了呢?甚至出现服务器死机或者频繁宕机的情况。发生这种情况,就很可能是您打开了太多的记录集对象以及连接(Connection)对象而最后却没有关闭他们引起的。使用如下方法进行关闭:YourRecordSet.closeSet YourRecordSet=NothingSet YourConnection=Nothing6. 取得数据库数据的方法。比较您是如何得到记录集的数据的呢?大多数程序员使用YourRecordSet(字段编号),或者YourRecordSet("字段名称"),其实还有其他的使用方法,现在我们就比较一下吧(100条记录):Rs("字段名称")Rs("字段名").ValueRs("字段编号")Set方法数据库回应时间2.967秒2.936秒1.650秒0.586秒2.824秒2.914秒1.611秒0.602秒2.893秒2.943秒1.613秒0.594秒,平均回应时间2.895秒2.931秒1.625秒0.594秒,前三种方法大家都可以看的明白,第四种方法(Set方法)使用:Dim strSQLStrSQL="select name,sex,age from yourtable"Dim rsSet rs=server.createobject("ADODB.RECORDSET")Rs.open strSQL,conn,1,1Const fieldsOrder=2Dim objOrderSet objOrder=rs(fieldsOrder)Response.write objOrder  二. 有关ASP内置对象使用方面的优化方法1. 尽量减少Session对象和Application对象。使用虽然ASP中提供的这两个对象对我们的编程提供了很大的帮助,但是,对这两个对象要合理的使用,不要滥用。因为大量的使用这两个对象将会极大的增大服务器的负担,严重消耗系统资源。也将使您的ASP程序运行慢如老牛。2. 要及时的关闭不再使用的对象(尤其是Session和Application)不及时的关闭您所使用的对象会导致系统运行速度变得缓慢。大多数程序员认为Session和Application可以自动消失,但是系统默认30分钟内访问者如果没有任何操作就自动触发Session_OnEnd和Application_OnEnd事件,但是大量的访问者频繁的读取服务器,服务器将在很长的一段时间保持那些已经没有用的Session,Application对象,如果不及时关闭使用完的Session和Application后果将不堪想象了。关闭的方法是:Set 对象=Nothing三. 合理使用Include文件。我们这里说的是指用<!--#include file="xxx"--形式包含进来的文件,并且文件内容全是ASP程序,也就是说您将一些公共的函数放到一个文件中,并在其他有可能调用其中函数的页面包含进来。建议您不要将所有的函数放到一个包含文件中,因为您在其他页面包含这个文件的时候,服务器端是要进行预编译的,很可能在一个包含文件里面有上百个函数,而您只是想要使用其中的一个函数,这样就严重消耗系统资源。所以,尽可能的分割您的包含文件成为多个小的包含文件。这样也可以提高程序的运行速度。四. 有关VBScript语言方面的优化方法1.尽量使用系统函数代替自己编写的函数比如要想分割一个有规律的字符串("sss,ddd,fff,ggg"),就不必自己使用什么Mid(),Instr等等函数来分析了,其实VBScript就提供了一个函数 Split(),这样既省时间,又提高了速度。2.减少动态数组的使用3.尽可能提前声明变量,提前声明变量会加快程序的解释执行时间。相反,从不声明变量,不但程序难以阅读,整个程序在服务器的执行效率也会大打折扣的。五. 其他方面的优化方法1. 在ASP文件中尽量使用<%%嵌入到HTML标签中,而不要使用Response.write的方式,比如:<html<body<%If ok =1 then %Hello! World!<%End If%就远远比:<%Response.write "<html"Response.write "<body"         If ok =1 thenResponse.write "Hello! World!"         End IfResponse.write "Response.write "%的运行速度要快,尤其是您的ASP文件比较大的情况下。因为,第二种方式增加了服务器端的解释时间,因而也就降低了ASP程序的性能。2. 尽量用一个ASP文件完成一个动作很多人喜欢在一个ASP程序中同时完成诸如添加,删除,查找等等多个动作,不要认为这样是有效的利用了文件,相反,这样做的结果是使得应用程序的运行速度减慢很多。应当将添加,删除,查找等分割成单个的独立的ASP文件来完成。这样使得文件不会过于庞大,降低服务器端解释执行的负担,并且阅读程序也很快捷。如问题还未解决,请联系售后技术支持。

2019-12-01 23:22:03 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档          ASP 本身并不是一种脚本语言,它只是提供了一种使镶嵌在 HTML 页面中的脚本程序得以运行的环境,而在ASP中最常用的脚本语言就是VBScript了。虽然ASP的脚本语言很简单,但是要想让一个ASP程序能够最优化的运行也不是一件简单的事情。现在国内的网络带宽很有限,网络十分拥挤,如何使得自己的ASP应用程序能够快速的运行就成为了每一个ASP程序员的梦想了。一. 有关操作数据库的优化方法我们使用ASP最主要的用途就是对数据库进行操作了,如何更快速的完成这些动作呢?1. 不要任意使用“SELECT  *  ......”请尽量拾取您所需要的那些字段,比如,一个Table中有10个字段,但是您只会用到其中的一个字段(name),就要使用“select name from yourtable”,而不是用“select * from yourtable”。如果一个table中有50个字段,您需要用到其中的23个字段的时候,大多数程序员就不一定会用“select name,sex,age... from yourtable”测试证明,尽量拾取您所需要的那些字段来使用select语句将会是您的ASP程序至少加快5%左右。2. 尽可能使用系统存储过程(针对MS SQL Server)。有的时候完成一个读取操作,使用SQL语句和存储过程同样可以完成,但是使用存储过程将会大大加快完成读取操作的速度,也就提高了您的ASP程序运行的速度。3. 注意您的游标使用方法如果您仅仅是对一个table进行读取操作,那么建议您使用forward-only,read-only游标,因为这种游标读取数据库是最为快速的,尤其是在读取数据量很大的情况下。4. 不要打开无用的独立记录集。比如在生成一个树型记录集的时候,我们一般不得不打开父记录集以及对应的子记录集,甚至还有孙记录集,其实您可以使用ADO提供的Data Shaping技术来替代打开多个独立的记录集,那样会加快程序的运行速度。(关于Data Shaping的用法可以参考ADO帮助)5. 记着关闭打开的记录集对象以及连接(Connection)对象。有些程序员总是奇怪为何自己的ASP程序刚开始的时候运行速度很快,可是多运行几遍就越来越慢了呢?甚至出现服务器死机或者频繁宕机的情况。发生这种情况,就很可能是您打开了太多的记录集对象以及连接(Connection)对象而最后却没有关闭他们引起的。使用如下方法进行关闭:YourRecordSet.closeSet YourRecordSet=NothingSet YourConnection=Nothing6. 取得数据库数据的方法。比较您是如何得到记录集的数据的呢?大多数程序员使用YourRecordSet(字段编号),或者YourRecordSet("字段名称"),其实还有其他的使用方法,现在我们就比较一下吧(100条记录):Rs("字段名称")Rs("字段名").ValueRs("字段编号")Set方法数据库回应时间2.967秒2.936秒1.650秒0.586秒2.824秒2.914秒1.611秒0.602秒2.893秒2.943秒1.613秒0.594秒,平均回应时间2.895秒2.931秒1.625秒0.594秒,前三种方法大家都可以看的明白,第四种方法(Set方法)使用:Dim strSQLStrSQL="select name,sex,age from yourtable"Dim rsSet rs=server.createobject("ADODB.RECORDSET")Rs.open strSQL,conn,1,1Const fieldsOrder=2Dim objOrderSet objOrder=rs(fieldsOrder)Response.write objOrder  二. 有关ASP内置对象使用方面的优化方法1. 尽量减少Session对象和Application对象。使用虽然ASP中提供的这两个对象对我们的编程提供了很大的帮助,但是,对这两个对象要合理的使用,不要滥用。因为大量的使用这两个对象将会极大的增大服务器的负担,严重消耗系统资源。也将使您的ASP程序运行慢如老牛。2. 要及时的关闭不再使用的对象(尤其是Session和Application)不及时的关闭您所使用的对象会导致系统运行速度变得缓慢。大多数程序员认为Session和Application可以自动消失,但是系统默认30分钟内访问者如果没有任何操作就自动触发Session_OnEnd和Application_OnEnd事件,但是大量的访问者频繁的读取服务器,服务器将在很长的一段时间保持那些已经没有用的Session,Application对象,如果不及时关闭使用完的Session和Application后果将不堪想象了。关闭的方法是:Set 对象=Nothing三. 合理使用Include文件。我们这里说的是指用<!--#include file="xxx"--形式包含进来的文件,并且文件内容全是ASP程序,也就是说您将一些公共的函数放到一个文件中,并在其他有可能调用其中函数的页面包含进来。建议您不要将所有的函数放到一个包含文件中,因为您在其他页面包含这个文件的时候,服务器端是要进行预编译的,很可能在一个包含文件里面有上百个函数,而您只是想要使用其中的一个函数,这样就严重消耗系统资源。所以,尽可能的分割您的包含文件成为多个小的包含文件。这样也可以提高程序的运行速度。四. 有关VBScript语言方面的优化方法1.尽量使用系统函数代替自己编写的函数比如要想分割一个有规律的字符串("sss,ddd,fff,ggg"),就不必自己使用什么Mid(),Instr等等函数来分析了,其实VBScript就提供了一个函数 Split(),这样既省时间,又提高了速度。2.减少动态数组的使用3.尽可能提前声明变量,提前声明变量会加快程序的解释执行时间。相反,从不声明变量,不但程序难以阅读,整个程序在服务器的执行效率也会大打折扣的。五. 其他方面的优化方法1. 在ASP文件中尽量使用<%%嵌入到HTML标签中,而不要使用Response.write的方式,比如:<html<body<%If ok =1 then %Hello! World!<%End If%就远远比:<%Response.write "<html"Response.write "<body"         If ok =1 thenResponse.write "Hello! World!"         End IfResponse.write "Response.write "%的运行速度要快,尤其是您的ASP文件比较大的情况下。因为,第二种方式增加了服务器端的解释时间,因而也就降低了ASP程序的性能。2. 尽量用一个ASP文件完成一个动作很多人喜欢在一个ASP程序中同时完成诸如添加,删除,查找等等多个动作,不要认为这样是有效的利用了文件,相反,这样做的结果是使得应用程序的运行速度减慢很多。应当将添加,删除,查找等分割成单个的独立的ASP文件来完成。这样使得文件不会过于庞大,降低服务器端解释执行的负担,并且阅读程序也很快捷。如问题还未解决,请联系售后技术支持。

2019-12-01 23:22:02 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档          ASP 本身并不是一种脚本语言,它只是提供了一种使镶嵌在 HTML 页面中的脚本程序得以运行的环境,而在ASP中最常用的脚本语言就是VBScript了。虽然ASP的脚本语言很简单,但是要想让一个ASP程序能够最优化的运行也不是一件简单的事情。现在国内的网络带宽很有限,网络十分拥挤,如何使得自己的ASP应用程序能够快速的运行就成为了每一个ASP程序员的梦想了。一. 有关操作数据库的优化方法我们使用ASP最主要的用途就是对数据库进行操作了,如何更快速的完成这些动作呢?1. 不要任意使用“SELECT  *  ......”请尽量拾取您所需要的那些字段,比如,一个Table中有10个字段,但是您只会用到其中的一个字段(name),就要使用“select name from yourtable”,而不是用“select * from yourtable”。如果一个table中有50个字段,您需要用到其中的23个字段的时候,大多数程序员就不一定会用“select name,sex,age... from yourtable”测试证明,尽量拾取您所需要的那些字段来使用select语句将会是您的ASP程序至少加快5%左右。2. 尽可能使用系统存储过程(针对MS SQL Server)。有的时候完成一个读取操作,使用SQL语句和存储过程同样可以完成,但是使用存储过程将会大大加快完成读取操作的速度,也就提高了您的ASP程序运行的速度。3. 注意您的游标使用方法如果您仅仅是对一个table进行读取操作,那么建议您使用forward-only,read-only游标,因为这种游标读取数据库是最为快速的,尤其是在读取数据量很大的情况下。4. 不要打开无用的独立记录集。比如在生成一个树型记录集的时候,我们一般不得不打开父记录集以及对应的子记录集,甚至还有孙记录集,其实您可以使用ADO提供的Data Shaping技术来替代打开多个独立的记录集,那样会加快程序的运行速度。(关于Data Shaping的用法可以参考ADO帮助)5. 记着关闭打开的记录集对象以及连接(Connection)对象。有些程序员总是奇怪为何自己的ASP程序刚开始的时候运行速度很快,可是多运行几遍就越来越慢了呢?甚至出现服务器死机或者频繁宕机的情况。发生这种情况,就很可能是您打开了太多的记录集对象以及连接(Connection)对象而最后却没有关闭他们引起的。使用如下方法进行关闭:YourRecordSet.closeSet YourRecordSet=NothingSet YourConnection=Nothing6. 取得数据库数据的方法。比较您是如何得到记录集的数据的呢?大多数程序员使用YourRecordSet(字段编号),或者YourRecordSet("字段名称"),其实还有其他的使用方法,现在我们就比较一下吧(100条记录):Rs("字段名称")Rs("字段名").ValueRs("字段编号")Set方法数据库回应时间2.967秒2.936秒1.650秒0.586秒2.824秒2.914秒1.611秒0.602秒2.893秒2.943秒1.613秒0.594秒,平均回应时间2.895秒2.931秒1.625秒0.594秒,前三种方法大家都可以看的明白,第四种方法(Set方法)使用:Dim strSQLStrSQL="select name,sex,age from yourtable"Dim rsSet rs=server.createobject("ADODB.RECORDSET")Rs.open strSQL,conn,1,1Const fieldsOrder=2Dim objOrderSet objOrder=rs(fieldsOrder)Response.write objOrder  二. 有关ASP内置对象使用方面的优化方法1. 尽量减少Session对象和Application对象。使用虽然ASP中提供的这两个对象对我们的编程提供了很大的帮助,但是,对这两个对象要合理的使用,不要滥用。因为大量的使用这两个对象将会极大的增大服务器的负担,严重消耗系统资源。也将使您的ASP程序运行慢如老牛。2. 要及时的关闭不再使用的对象(尤其是Session和Application)不及时的关闭您所使用的对象会导致系统运行速度变得缓慢。大多数程序员认为Session和Application可以自动消失,但是系统默认30分钟内访问者如果没有任何操作就自动触发Session_OnEnd和Application_OnEnd事件,但是大量的访问者频繁的读取服务器,服务器将在很长的一段时间保持那些已经没有用的Session,Application对象,如果不及时关闭使用完的Session和Application后果将不堪想象了。关闭的方法是:Set 对象=Nothing三. 合理使用Include文件。我们这里说的是指用<!--#include file="xxx"--形式包含进来的文件,并且文件内容全是ASP程序,也就是说您将一些公共的函数放到一个文件中,并在其他有可能调用其中函数的页面包含进来。建议您不要将所有的函数放到一个包含文件中,因为您在其他页面包含这个文件的时候,服务器端是要进行预编译的,很可能在一个包含文件里面有上百个函数,而您只是想要使用其中的一个函数,这样就严重消耗系统资源。所以,尽可能的分割您的包含文件成为多个小的包含文件。这样也可以提高程序的运行速度。四. 有关VBScript语言方面的优化方法1.尽量使用系统函数代替自己编写的函数比如要想分割一个有规律的字符串("sss,ddd,fff,ggg"),就不必自己使用什么Mid(),Instr等等函数来分析了,其实VBScript就提供了一个函数 Split(),这样既省时间,又提高了速度。2.减少动态数组的使用3.尽可能提前声明变量,提前声明变量会加快程序的解释执行时间。相反,从不声明变量,不但程序难以阅读,整个程序在服务器的执行效率也会大打折扣的。五. 其他方面的优化方法1. 在ASP文件中尽量使用<%%嵌入到HTML标签中,而不要使用Response.write的方式,比如:<html<body<%If ok =1 then %Hello! World!<%End If%就远远比:<%Response.write "<html"Response.write "<body"         If ok =1 thenResponse.write "Hello! World!"         End IfResponse.write "Response.write "%的运行速度要快,尤其是您的ASP文件比较大的情况下。因为,第二种方式增加了服务器端的解释时间,因而也就降低了ASP程序的性能。2. 尽量用一个ASP文件完成一个动作很多人喜欢在一个ASP程序中同时完成诸如添加,删除,查找等等多个动作,不要认为这样是有效的利用了文件,相反,这样做的结果是使得应用程序的运行速度减慢很多。应当将添加,删除,查找等分割成单个的独立的ASP文件来完成。这样使得文件不会过于庞大,降低服务器端解释执行的负担,并且阅读程序也很快捷。如问题还未解决,请联系售后技术支持。

2019-12-01 23:22:04 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档          ASP 本身并不是一种脚本语言,它只是提供了一种使镶嵌在 HTML 页面中的脚本程序得以运行的环境,而在ASP中最常用的脚本语言就是VBScript了。虽然ASP的脚本语言很简单,但是要想让一个ASP程序能够最优化的运行也不是一件简单的事情。现在国内的网络带宽很有限,网络十分拥挤,如何使得自己的ASP应用程序能够快速的运行就成为了每一个ASP程序员的梦想了。一. 有关操作数据库的优化方法我们使用ASP最主要的用途就是对数据库进行操作了,如何更快速的完成这些动作呢?1. 不要任意使用“SELECT  *  ......”请尽量拾取您所需要的那些字段,比如,一个Table中有10个字段,但是您只会用到其中的一个字段(name),就要使用“select name from yourtable”,而不是用“select * from yourtable”。如果一个table中有50个字段,您需要用到其中的23个字段的时候,大多数程序员就不一定会用“select name,sex,age... from yourtable”测试证明,尽量拾取您所需要的那些字段来使用select语句将会是您的ASP程序至少加快5%左右。2. 尽可能使用系统存储过程(针对MS SQL Server)。有的时候完成一个读取操作,使用SQL语句和存储过程同样可以完成,但是使用存储过程将会大大加快完成读取操作的速度,也就提高了您的ASP程序运行的速度。3. 注意您的游标使用方法如果您仅仅是对一个table进行读取操作,那么建议您使用forward-only,read-only游标,因为这种游标读取数据库是最为快速的,尤其是在读取数据量很大的情况下。4. 不要打开无用的独立记录集。比如在生成一个树型记录集的时候,我们一般不得不打开父记录集以及对应的子记录集,甚至还有孙记录集,其实您可以使用ADO提供的Data Shaping技术来替代打开多个独立的记录集,那样会加快程序的运行速度。(关于Data Shaping的用法可以参考ADO帮助)5. 记着关闭打开的记录集对象以及连接(Connection)对象。有些程序员总是奇怪为何自己的ASP程序刚开始的时候运行速度很快,可是多运行几遍就越来越慢了呢?甚至出现服务器死机或者频繁宕机的情况。发生这种情况,就很可能是您打开了太多的记录集对象以及连接(Connection)对象而最后却没有关闭他们引起的。使用如下方法进行关闭:YourRecordSet.closeSet YourRecordSet=NothingSet YourConnection=Nothing6. 取得数据库数据的方法。比较您是如何得到记录集的数据的呢?大多数程序员使用YourRecordSet(字段编号),或者YourRecordSet("字段名称"),其实还有其他的使用方法,现在我们就比较一下吧(100条记录):Rs("字段名称")Rs("字段名").ValueRs("字段编号")Set方法数据库回应时间2.967秒2.936秒1.650秒0.586秒2.824秒2.914秒1.611秒0.602秒2.893秒2.943秒1.613秒0.594秒,平均回应时间2.895秒2.931秒1.625秒0.594秒,前三种方法大家都可以看的明白,第四种方法(Set方法)使用:Dim strSQLStrSQL="select name,sex,age from yourtable"Dim rsSet rs=server.createobject("ADODB.RECORDSET")Rs.open strSQL,conn,1,1Const fieldsOrder=2Dim objOrderSet objOrder=rs(fieldsOrder)Response.write objOrder  二. 有关ASP内置对象使用方面的优化方法1. 尽量减少Session对象和Application对象。使用虽然ASP中提供的这两个对象对我们的编程提供了很大的帮助,但是,对这两个对象要合理的使用,不要滥用。因为大量的使用这两个对象将会极大的增大服务器的负担,严重消耗系统资源。也将使您的ASP程序运行慢如老牛。2. 要及时的关闭不再使用的对象(尤其是Session和Application)不及时的关闭您所使用的对象会导致系统运行速度变得缓慢。大多数程序员认为Session和Application可以自动消失,但是系统默认30分钟内访问者如果没有任何操作就自动触发Session_OnEnd和Application_OnEnd事件,但是大量的访问者频繁的读取服务器,服务器将在很长的一段时间保持那些已经没有用的Session,Application对象,如果不及时关闭使用完的Session和Application后果将不堪想象了。关闭的方法是:Set 对象=Nothing三. 合理使用Include文件。我们这里说的是指用<!--#include file="xxx"--形式包含进来的文件,并且文件内容全是ASP程序,也就是说您将一些公共的函数放到一个文件中,并在其他有可能调用其中函数的页面包含进来。建议您不要将所有的函数放到一个包含文件中,因为您在其他页面包含这个文件的时候,服务器端是要进行预编译的,很可能在一个包含文件里面有上百个函数,而您只是想要使用其中的一个函数,这样就严重消耗系统资源。所以,尽可能的分割您的包含文件成为多个小的包含文件。这样也可以提高程序的运行速度。四. 有关VBScript语言方面的优化方法1.尽量使用系统函数代替自己编写的函数比如要想分割一个有规律的字符串("sss,ddd,fff,ggg"),就不必自己使用什么Mid(),Instr等等函数来分析了,其实VBScript就提供了一个函数 Split(),这样既省时间,又提高了速度。2.减少动态数组的使用3.尽可能提前声明变量,提前声明变量会加快程序的解释执行时间。相反,从不声明变量,不但程序难以阅读,整个程序在服务器的执行效率也会大打折扣的。五. 其他方面的优化方法1. 在ASP文件中尽量使用<%%嵌入到HTML标签中,而不要使用Response.write的方式,比如:<html<body<%If ok =1 then %Hello! World!<%End If%就远远比:<%Response.write "<html"Response.write "<body"         If ok =1 thenResponse.write "Hello! World!"         End IfResponse.write "Response.write "%的运行速度要快,尤其是您的ASP文件比较大的情况下。因为,第二种方式增加了服务器端的解释时间,因而也就降低了ASP程序的性能。2. 尽量用一个ASP文件完成一个动作很多人喜欢在一个ASP程序中同时完成诸如添加,删除,查找等等多个动作,不要认为这样是有效的利用了文件,相反,这样做的结果是使得应用程序的运行速度减慢很多。应当将添加,删除,查找等分割成单个的独立的ASP文件来完成。这样使得文件不会过于庞大,降低服务器端解释执行的负担,并且阅读程序也很快捷。如问题还未解决,请联系售后技术支持。

2019-12-01 23:22:03 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档          ASP 本身并不是一种脚本语言,它只是提供了一种使镶嵌在 HTML 页面中的脚本程序得以运行的环境,而在ASP中最常用的脚本语言就是VBScript了。虽然ASP的脚本语言很简单,但是要想让一个ASP程序能够最优化的运行也不是一件简单的事情。现在国内的网络带宽很有限,网络十分拥挤,如何使得自己的ASP应用程序能够快速的运行就成为了每一个ASP程序员的梦想了。一. 有关操作数据库的优化方法我们使用ASP最主要的用途就是对数据库进行操作了,如何更快速的完成这些动作呢?1. 不要任意使用“SELECT  *  ......”请尽量拾取您所需要的那些字段,比如,一个Table中有10个字段,但是您只会用到其中的一个字段(name),就要使用“select name from yourtable”,而不是用“select * from yourtable”。如果一个table中有50个字段,您需要用到其中的23个字段的时候,大多数程序员就不一定会用“select name,sex,age... from yourtable”测试证明,尽量拾取您所需要的那些字段来使用select语句将会是您的ASP程序至少加快5%左右。2. 尽可能使用系统存储过程(针对MS SQL Server)。有的时候完成一个读取操作,使用SQL语句和存储过程同样可以完成,但是使用存储过程将会大大加快完成读取操作的速度,也就提高了您的ASP程序运行的速度。3. 注意您的游标使用方法如果您仅仅是对一个table进行读取操作,那么建议您使用forward-only,read-only游标,因为这种游标读取数据库是最为快速的,尤其是在读取数据量很大的情况下。4. 不要打开无用的独立记录集。比如在生成一个树型记录集的时候,我们一般不得不打开父记录集以及对应的子记录集,甚至还有孙记录集,其实您可以使用ADO提供的Data Shaping技术来替代打开多个独立的记录集,那样会加快程序的运行速度。(关于Data Shaping的用法可以参考ADO帮助)5. 记着关闭打开的记录集对象以及连接(Connection)对象。有些程序员总是奇怪为何自己的ASP程序刚开始的时候运行速度很快,可是多运行几遍就越来越慢了呢?甚至出现服务器死机或者频繁宕机的情况。发生这种情况,就很可能是您打开了太多的记录集对象以及连接(Connection)对象而最后却没有关闭他们引起的。使用如下方法进行关闭:YourRecordSet.closeSet YourRecordSet=NothingSet YourConnection=Nothing6. 取得数据库数据的方法。比较您是如何得到记录集的数据的呢?大多数程序员使用YourRecordSet(字段编号),或者YourRecordSet("字段名称"),其实还有其他的使用方法,现在我们就比较一下吧(100条记录):Rs("字段名称")Rs("字段名").ValueRs("字段编号")Set方法数据库回应时间2.967秒2.936秒1.650秒0.586秒2.824秒2.914秒1.611秒0.602秒2.893秒2.943秒1.613秒0.594秒,平均回应时间2.895秒2.931秒1.625秒0.594秒,前三种方法大家都可以看的明白,第四种方法(Set方法)使用:Dim strSQLStrSQL="select name,sex,age from yourtable"Dim rsSet rs=server.createobject("ADODB.RECORDSET")Rs.open strSQL,conn,1,1Const fieldsOrder=2Dim objOrderSet objOrder=rs(fieldsOrder)Response.write objOrder  二. 有关ASP内置对象使用方面的优化方法1. 尽量减少Session对象和Application对象。使用虽然ASP中提供的这两个对象对我们的编程提供了很大的帮助,但是,对这两个对象要合理的使用,不要滥用。因为大量的使用这两个对象将会极大的增大服务器的负担,严重消耗系统资源。也将使您的ASP程序运行慢如老牛。2. 要及时的关闭不再使用的对象(尤其是Session和Application)不及时的关闭您所使用的对象会导致系统运行速度变得缓慢。大多数程序员认为Session和Application可以自动消失,但是系统默认30分钟内访问者如果没有任何操作就自动触发Session_OnEnd和Application_OnEnd事件,但是大量的访问者频繁的读取服务器,服务器将在很长的一段时间保持那些已经没有用的Session,Application对象,如果不及时关闭使用完的Session和Application后果将不堪想象了。关闭的方法是:Set 对象=Nothing三. 合理使用Include文件。我们这里说的是指用<!--#include file="xxx"--形式包含进来的文件,并且文件内容全是ASP程序,也就是说您将一些公共的函数放到一个文件中,并在其他有可能调用其中函数的页面包含进来。建议您不要将所有的函数放到一个包含文件中,因为您在其他页面包含这个文件的时候,服务器端是要进行预编译的,很可能在一个包含文件里面有上百个函数,而您只是想要使用其中的一个函数,这样就严重消耗系统资源。所以,尽可能的分割您的包含文件成为多个小的包含文件。这样也可以提高程序的运行速度。四. 有关VBScript语言方面的优化方法1.尽量使用系统函数代替自己编写的函数比如要想分割一个有规律的字符串("sss,ddd,fff,ggg"),就不必自己使用什么Mid(),Instr等等函数来分析了,其实VBScript就提供了一个函数 Split(),这样既省时间,又提高了速度。2.减少动态数组的使用3.尽可能提前声明变量,提前声明变量会加快程序的解释执行时间。相反,从不声明变量,不但程序难以阅读,整个程序在服务器的执行效率也会大打折扣的。五. 其他方面的优化方法1. 在ASP文件中尽量使用<%%嵌入到HTML标签中,而不要使用Response.write的方式,比如:<html<body<%If ok =1 then %Hello! World!<%End If%就远远比:<%Response.write "<html"Response.write "<body"         If ok =1 thenResponse.write "Hello! World!"         End IfResponse.write "Response.write "%的运行速度要快,尤其是您的ASP文件比较大的情况下。因为,第二种方式增加了服务器端的解释时间,因而也就降低了ASP程序的性能。2. 尽量用一个ASP文件完成一个动作很多人喜欢在一个ASP程序中同时完成诸如添加,删除,查找等等多个动作,不要认为这样是有效的利用了文件,相反,这样做的结果是使得应用程序的运行速度减慢很多。应当将添加,删除,查找等分割成单个的独立的ASP文件来完成。这样使得文件不会过于庞大,降低服务器端解释执行的负担,并且阅读程序也很快捷。如问题还未解决,请联系售后技术支持。

2019-12-01 23:22:03 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档          ASP 本身并不是一种脚本语言,它只是提供了一种使镶嵌在 HTML 页面中的脚本程序得以运行的环境,而在ASP中最常用的脚本语言就是VBScript了。虽然ASP的脚本语言很简单,但是要想让一个ASP程序能够最优化的运行也不是一件简单的事情。现在国内的网络带宽很有限,网络十分拥挤,如何使得自己的ASP应用程序能够快速的运行就成为了每一个ASP程序员的梦想了。一. 有关操作数据库的优化方法我们使用ASP最主要的用途就是对数据库进行操作了,如何更快速的完成这些动作呢?1. 不要任意使用“SELECT  *  ......”请尽量拾取您所需要的那些字段,比如,一个Table中有10个字段,但是您只会用到其中的一个字段(name),就要使用“select name from yourtable”,而不是用“select * from yourtable”。如果一个table中有50个字段,您需要用到其中的23个字段的时候,大多数程序员就不一定会用“select name,sex,age... from yourtable”测试证明,尽量拾取您所需要的那些字段来使用select语句将会是您的ASP程序至少加快5%左右。2. 尽可能使用系统存储过程(针对MS SQL Server)。有的时候完成一个读取操作,使用SQL语句和存储过程同样可以完成,但是使用存储过程将会大大加快完成读取操作的速度,也就提高了您的ASP程序运行的速度。3. 注意您的游标使用方法如果您仅仅是对一个table进行读取操作,那么建议您使用forward-only,read-only游标,因为这种游标读取数据库是最为快速的,尤其是在读取数据量很大的情况下。4. 不要打开无用的独立记录集。比如在生成一个树型记录集的时候,我们一般不得不打开父记录集以及对应的子记录集,甚至还有孙记录集,其实您可以使用ADO提供的Data Shaping技术来替代打开多个独立的记录集,那样会加快程序的运行速度。(关于Data Shaping的用法可以参考ADO帮助)5. 记着关闭打开的记录集对象以及连接(Connection)对象。有些程序员总是奇怪为何自己的ASP程序刚开始的时候运行速度很快,可是多运行几遍就越来越慢了呢?甚至出现服务器死机或者频繁宕机的情况。发生这种情况,就很可能是您打开了太多的记录集对象以及连接(Connection)对象而最后却没有关闭他们引起的。使用如下方法进行关闭:YourRecordSet.closeSet YourRecordSet=NothingSet YourConnection=Nothing6. 取得数据库数据的方法。比较您是如何得到记录集的数据的呢?大多数程序员使用YourRecordSet(字段编号),或者YourRecordSet("字段名称"),其实还有其他的使用方法,现在我们就比较一下吧(100条记录):Rs("字段名称")Rs("字段名").ValueRs("字段编号")Set方法数据库回应时间2.967秒2.936秒1.650秒0.586秒2.824秒2.914秒1.611秒0.602秒2.893秒2.943秒1.613秒0.594秒,平均回应时间2.895秒2.931秒1.625秒0.594秒,前三种方法大家都可以看的明白,第四种方法(Set方法)使用:Dim strSQLStrSQL="select name,sex,age from yourtable"Dim rsSet rs=server.createobject("ADODB.RECORDSET")Rs.open strSQL,conn,1,1Const fieldsOrder=2Dim objOrderSet objOrder=rs(fieldsOrder)Response.write objOrder  二. 有关ASP内置对象使用方面的优化方法1. 尽量减少Session对象和Application对象。使用虽然ASP中提供的这两个对象对我们的编程提供了很大的帮助,但是,对这两个对象要合理的使用,不要滥用。因为大量的使用这两个对象将会极大的增大服务器的负担,严重消耗系统资源。也将使您的ASP程序运行慢如老牛。2. 要及时的关闭不再使用的对象(尤其是Session和Application)不及时的关闭您所使用的对象会导致系统运行速度变得缓慢。大多数程序员认为Session和Application可以自动消失,但是系统默认30分钟内访问者如果没有任何操作就自动触发Session_OnEnd和Application_OnEnd事件,但是大量的访问者频繁的读取服务器,服务器将在很长的一段时间保持那些已经没有用的Session,Application对象,如果不及时关闭使用完的Session和Application后果将不堪想象了。关闭的方法是:Set 对象=Nothing三. 合理使用Include文件。我们这里说的是指用<!--#include file="xxx"--形式包含进来的文件,并且文件内容全是ASP程序,也就是说您将一些公共的函数放到一个文件中,并在其他有可能调用其中函数的页面包含进来。建议您不要将所有的函数放到一个包含文件中,因为您在其他页面包含这个文件的时候,服务器端是要进行预编译的,很可能在一个包含文件里面有上百个函数,而您只是想要使用其中的一个函数,这样就严重消耗系统资源。所以,尽可能的分割您的包含文件成为多个小的包含文件。这样也可以提高程序的运行速度。四. 有关VBScript语言方面的优化方法1.尽量使用系统函数代替自己编写的函数比如要想分割一个有规律的字符串("sss,ddd,fff,ggg"),就不必自己使用什么Mid(),Instr等等函数来分析了,其实VBScript就提供了一个函数 Split(),这样既省时间,又提高了速度。2.减少动态数组的使用3.尽可能提前声明变量,提前声明变量会加快程序的解释执行时间。相反,从不声明变量,不但程序难以阅读,整个程序在服务器的执行效率也会大打折扣的。五. 其他方面的优化方法1. 在ASP文件中尽量使用<%%嵌入到HTML标签中,而不要使用Response.write的方式,比如:<html<body<%If ok =1 then %Hello! World!<%End If%就远远比:<%Response.write "<html"Response.write "<body"         If ok =1 thenResponse.write "Hello! World!"         End IfResponse.write "Response.write "%的运行速度要快,尤其是您的ASP文件比较大的情况下。因为,第二种方式增加了服务器端的解释时间,因而也就降低了ASP程序的性能。2. 尽量用一个ASP文件完成一个动作很多人喜欢在一个ASP程序中同时完成诸如添加,删除,查找等等多个动作,不要认为这样是有效的利用了文件,相反,这样做的结果是使得应用程序的运行速度减慢很多。应当将添加,删除,查找等分割成单个的独立的ASP文件来完成。这样使得文件不会过于庞大,降低服务器端解释执行的负担,并且阅读程序也很快捷。如问题还未解决,请联系售后技术支持。

2019-12-01 23:22:03 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档          ASP 本身并不是一种脚本语言,它只是提供了一种使镶嵌在 HTML 页面中的脚本程序得以运行的环境,而在ASP中最常用的脚本语言就是VBScript了。虽然ASP的脚本语言很简单,但是要想让一个ASP程序能够最优化的运行也不是一件简单的事情。现在国内的网络带宽很有限,网络十分拥挤,如何使得自己的ASP应用程序能够快速的运行就成为了每一个ASP程序员的梦想了。一. 有关操作数据库的优化方法我们使用ASP最主要的用途就是对数据库进行操作了,如何更快速的完成这些动作呢?1. 不要任意使用“SELECT  *  ......”请尽量拾取您所需要的那些字段,比如,一个Table中有10个字段,但是您只会用到其中的一个字段(name),就要使用“select name from yourtable”,而不是用“select * from yourtable”。如果一个table中有50个字段,您需要用到其中的23个字段的时候,大多数程序员就不一定会用“select name,sex,age... from yourtable”测试证明,尽量拾取您所需要的那些字段来使用select语句将会是您的ASP程序至少加快5%左右。2. 尽可能使用系统存储过程(针对MS SQL Server)。有的时候完成一个读取操作,使用SQL语句和存储过程同样可以完成,但是使用存储过程将会大大加快完成读取操作的速度,也就提高了您的ASP程序运行的速度。3. 注意您的游标使用方法如果您仅仅是对一个table进行读取操作,那么建议您使用forward-only,read-only游标,因为这种游标读取数据库是最为快速的,尤其是在读取数据量很大的情况下。4. 不要打开无用的独立记录集。比如在生成一个树型记录集的时候,我们一般不得不打开父记录集以及对应的子记录集,甚至还有孙记录集,其实您可以使用ADO提供的Data Shaping技术来替代打开多个独立的记录集,那样会加快程序的运行速度。(关于Data Shaping的用法可以参考ADO帮助)5. 记着关闭打开的记录集对象以及连接(Connection)对象。有些程序员总是奇怪为何自己的ASP程序刚开始的时候运行速度很快,可是多运行几遍就越来越慢了呢?甚至出现服务器死机或者频繁宕机的情况。发生这种情况,就很可能是您打开了太多的记录集对象以及连接(Connection)对象而最后却没有关闭他们引起的。使用如下方法进行关闭:YourRecordSet.closeSet YourRecordSet=NothingSet YourConnection=Nothing6. 取得数据库数据的方法。比较您是如何得到记录集的数据的呢?大多数程序员使用YourRecordSet(字段编号),或者YourRecordSet("字段名称"),其实还有其他的使用方法,现在我们就比较一下吧(100条记录):Rs("字段名称")Rs("字段名").ValueRs("字段编号")Set方法数据库回应时间2.967秒2.936秒1.650秒0.586秒2.824秒2.914秒1.611秒0.602秒2.893秒2.943秒1.613秒0.594秒,平均回应时间2.895秒2.931秒1.625秒0.594秒,前三种方法大家都可以看的明白,第四种方法(Set方法)使用:Dim strSQLStrSQL="select name,sex,age from yourtable"Dim rsSet rs=server.createobject("ADODB.RECORDSET")Rs.open strSQL,conn,1,1Const fieldsOrder=2Dim objOrderSet objOrder=rs(fieldsOrder)Response.write objOrder  二. 有关ASP内置对象使用方面的优化方法1. 尽量减少Session对象和Application对象。使用虽然ASP中提供的这两个对象对我们的编程提供了很大的帮助,但是,对这两个对象要合理的使用,不要滥用。因为大量的使用这两个对象将会极大的增大服务器的负担,严重消耗系统资源。也将使您的ASP程序运行慢如老牛。2. 要及时的关闭不再使用的对象(尤其是Session和Application)不及时的关闭您所使用的对象会导致系统运行速度变得缓慢。大多数程序员认为Session和Application可以自动消失,但是系统默认30分钟内访问者如果没有任何操作就自动触发Session_OnEnd和Application_OnEnd事件,但是大量的访问者频繁的读取服务器,服务器将在很长的一段时间保持那些已经没有用的Session,Application对象,如果不及时关闭使用完的Session和Application后果将不堪想象了。关闭的方法是:Set 对象=Nothing三. 合理使用Include文件。我们这里说的是指用<!--#include file="xxx"--形式包含进来的文件,并且文件内容全是ASP程序,也就是说您将一些公共的函数放到一个文件中,并在其他有可能调用其中函数的页面包含进来。建议您不要将所有的函数放到一个包含文件中,因为您在其他页面包含这个文件的时候,服务器端是要进行预编译的,很可能在一个包含文件里面有上百个函数,而您只是想要使用其中的一个函数,这样就严重消耗系统资源。所以,尽可能的分割您的包含文件成为多个小的包含文件。这样也可以提高程序的运行速度。四. 有关VBScript语言方面的优化方法1.尽量使用系统函数代替自己编写的函数比如要想分割一个有规律的字符串("sss,ddd,fff,ggg"),就不必自己使用什么Mid(),Instr等等函数来分析了,其实VBScript就提供了一个函数 Split(),这样既省时间,又提高了速度。2.减少动态数组的使用3.尽可能提前声明变量,提前声明变量会加快程序的解释执行时间。相反,从不声明变量,不但程序难以阅读,整个程序在服务器的执行效率也会大打折扣的。五. 其他方面的优化方法1. 在ASP文件中尽量使用<%%嵌入到HTML标签中,而不要使用Response.write的方式,比如:<html<body<%If ok =1 then %Hello! World!<%End If%就远远比:<%Response.write "<html"Response.write "<body"         If ok =1 thenResponse.write "Hello! World!"         End IfResponse.write "Response.write "%的运行速度要快,尤其是您的ASP文件比较大的情况下。因为,第二种方式增加了服务器端的解释时间,因而也就降低了ASP程序的性能。2. 尽量用一个ASP文件完成一个动作很多人喜欢在一个ASP程序中同时完成诸如添加,删除,查找等等多个动作,不要认为这样是有效的利用了文件,相反,这样做的结果是使得应用程序的运行速度减慢很多。应当将添加,删除,查找等分割成单个的独立的ASP文件来完成。这样使得文件不会过于庞大,降低服务器端解释执行的负担,并且阅读程序也很快捷。如问题还未解决,请联系售后技术支持。

2019-12-01 23:22:04 0 浏览量 回答数 0
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 企业信息查询 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站 阿里云双十一主会场 阿里云双十一新人会场 1024程序员加油包 阿里云双十一拼团会场 场景化解决方案 阿里云双十一直播大厅