Octopus系列之更新历史记录
更新笔记历史
2015.2.3
更新了产品价格的计算方法 --采用了通用化的一个处理【支持各个国家货币】
更新产品价格,增加两组价格:一组用来进行前台的展示:一组用来进行后台的计算
更新了产品分类页面的导航链接 --已经实现了4级分类的导航链接实现【后面将会参考兰亭集势的导航,实现分类下拉功能】【备注:可以支持无限级别】
更新了产品详情页面的导航链接 --很轻松就实现了,在产品对象中封装一个Category对象就可以了
更新了产品详情页面的图片详细图展示信息 --【在没有配置远程图片地址的情况下 将自动默认读取本机文件夹下Photo中的图片信息】
更新分页Cookie和货币Cookie --【统一管理在Ockey里面】
更新了货币,加入了货币列表 --用于前台展示使用
更新了Oct调用助手并将数据加入到全局的调用中 --为页面前台的调用提供最大程度的灵活性
更新将产品选项的展示属性 --同时去除掉OptionType该表,将字段直接写入到Option里面去
更新将产品主图信息加入到产品的详细的字段中去 --已经实现了,主要是为了在放大镜的时候使用这个东西
2015.3.3
更新了产品多选属性的数据库 --产品的多选属性采用json的方式进行描述【源于一个网友的启发】
开始编写购物车部分
2015.3.4
测试价格 更新部分通过
2015.3.7
更新购物车中的价格计算展示部分 --【不应该在计算的时候 乘以汇率了】
更新展示购物车 可以实现根据不同的参数加载不同的HTML模板【这一次的更新有很大意义:为后面实现ajax加载开创了一个很好的思路】
2015.3.8
更新了IE11中ajax调用失败的bug:禁止客户端进行缓存
Context.Response.CacheControl = "no-cache";
Context.Response.AppendHeader("Pragma", "No-Cache");
更新了购物车的ajax调用方式【可以调用购物车的各种展示版本,min版本或者其他的版本】
2015.3.9
更新产品售价为0时的bug return ""; 判断是否有小数点,在Staic_FormatPrice函数里面
2015.3.13
提出Widget的概念,升级代码Login,Register,ShoppingCart代码,并实现对应的Widget版本,使各个Widget可以独立使用【组件化】
增加表单的ajax提交功能
2015.3.14
更换数据SQlite版本;
更新计算分类Path的函数,使用SQLite事务的方式,提升了效率;
更新价格计算的方法,当遇到整数时,SQLite中没有小数点,

新增了SQLite版本的分页算法,初步测试通过【后续还要测试】
专门编写测试SQLite相关的函数;
去掉了一些不兼容的SQL语法;
合并Cart和member到一个数据库中;【后续还要考虑分离,并发问题】
读写分离数据库思路
2015.3.19
更新图片的文件夹的生成选项:
主文件夹/_s;
主文件夹/_m;
主文件夹/_b;
2015.3.20
修复页面请求中的异常请求bug
描述:在访问详情页面的时候,从fiddler中总是看到一个请求在访问首页,后来发现原来这个请求在Css中
background的URL属性中导致的,将其注销之后解决了这个问题
问题出在CSS中出现的异常请求:在文件cloud-zoom.js中同时也给我们很好的提示 在css中添加代码链接【比如做统计】
<div class='mousetrap' style='background-image:url(\".\");
2015.3.21
新增插入订单的方法
遇到jQuery和json.js不兼容的问题,解决方式是不在使用json.js而是采用JSON浏览器内置的对象,将表单序列serializeArray的数据转为json字符串
2015.3.22
继续完善订单的处理逻辑
开始进入会员中心选项页面
2015.3.31
完善物流方式和付款方式的
完善订单提交功能
发现内存飙升很快,正想办法解决【缓存方案已经加入】
追踪页面的查询SQL语句
2015.04.06
哈哈,最近这几天 一直在更新程序
规范了语言包的变量定义
规范了模板结构的命名
更新了价格的计算方法,应该是3.0的版本了
规范提取了TagFiled一些字段
规范了一些静态的变量,剔除一下些没有使用的变量
规范了状态码的使用
增加了优惠码的功能,用户只需要输入一次优惠码,就可以了,后面的再次更新购物车时将自动使用优惠码
小技巧的总结
不要使用数据库的自增字段,比如如果你使用SQLite数据库,自增字段的数值在C#中是Int64的,小数在C#中是double类型的
如果你使用时间类型的话,一定要设置默认值,即使该字段在后面不怎么使用?为什么呢?如果你设置的时间默认是null,
那么在C#中读取到DataTable时将会提示,“SQLite 查询时异常:该字符串未被识别为有效的 DateTime 错误”
所以保险起见,建议都设置成默认的 Create datetime NOT NULL DEFAULT current_timestamp;
同时插入时间数据时:记得ToString("S")
更新了所有的时间类型:为默认的时间
2015.04.25
最近更新了很多的bug,时间可能有点不对
运费异常bug:每次刷新checkou页面的时候,运费总是成倍的增加
我将系统中的物流和支付的都进行了缓存,将少对数据库的连接
但是物流中的运费是要通过货币对象进行实时计算的,正常的思路是,第一次加载所有的物流--缓存,后面每次使用时,取出--修改,然后返回
之所以运费总是成倍的增加,是因为我每次从缓存中读取对象然后修改,缓存中的对象已经是我上一次修改过的对象了,所以在原来的基础上
运费计算成本的增加。应该是内存中的对象不变,每次拷贝一份出来修改,不对象内存缓存造成修改。我尝试使用Clone() 和Array CopyTo
方法都失败了,后来使用了 new构造函数,重新构造一份物流数组对象,问题得到解决
更新页面增加区分页面的类型PageName
目的:使不同的页面加载各自不同的 css和js,从而实现html_header_1.html代码片段的公用
通过区分不用的页面 来实现不同页面 js的加载 区分请求的页面类型即可
加载顺序如下
1.加载公共CSS
2.根据页面加载自定义Css
3.加载公共js
4.根据页面加载自定义Css
还有一种加载顺序
直接判断页面 然后一次性加载该页面所有的CSS和js,NV引擎是支持|| 等逻辑运算符号的
后续loadding。。。
Octopus系列之更新历史记录的更多相关文章
- Octopus系列之如何让前台的js脚本变得灵活重用
Octopus系列如何让前台的js脚本变得灵活,重用 方式1:ajax方式 方式2:form表单方式 面向对象的脚本封装 jQuery的封装 做Web开发的少不了前台Ajax的使用, 返回true:f ...
- ASP.NET MVC深入浅出系列(持续更新) ORM系列之Entity FrameWork详解(持续更新) 第十六节:语法总结(3)(C#6.0和C#7.0新语法) 第三节:深度剖析各类数据结构(Array、List、Queue、Stack)及线程安全问题和yeild关键字 各种通讯连接方式 设计模式篇 第十二节: 总结Quartz.Net几种部署模式(IIS、Exe、服务部署【借
ASP.NET MVC深入浅出系列(持续更新) 一. ASP.NET体系 从事.Net开发以来,最先接触的Web开发框架是Asp.Net WebForm,该框架高度封装,为了隐藏Http的无状态模 ...
- Ext JS学习第十六天 事件机制event(一) DotNet进阶系列(持续更新) 第一节:.Net版基于WebSocket的聊天室样例 第十五节:深入理解async和await的作用及各种适用场景和用法 第十五节:深入理解async和await的作用及各种适用场景和用法 前端自动化准备和详细配置(NVM、NPM/CNPM、NodeJs、NRM、WebPack、Gulp/Grunt、G
code&monkey Ext JS学习第十六天 事件机制event(一) 此文用来记录学习笔记: 休息了好几天,从今天开始继续保持更新,鞭策自己学习 今天我们来说一说什么是事件,对于事件 ...
- Vulnhub系列——持续更新
vulnhub系列--持续更新 一 · XXE Lab: 1 使用vmware搭建靶机 扫描存活主机 找到目标主机--192.168.1.18 开始扫描目标端口 发现只开了一个80 ...
- Octopus系列之开发中灵光点收集,先放到这里,后面会整理的
项目中引用的组件 1.System.Data.SQLite.dll 自行编译 SQLite-1.0.66.0-source 3.5的框架:F:\Code\开源项目\SQLite\1.0.66.0_x8 ...
- Octopus系列之各个页面调用示例
调用首页产品 可选参数如下 New = 1, Hot = 2, Best = 3, Special = 4, Featured = 5, Other = 6 #foreach($item in $oc ...
- IT男的”幸福”生活"系列暂停更新通知
首先谢谢博客园,这里给了我很多快乐.更给了大家一个学习的好地方. 在这几天更新过程中,看到了很多哥们的关注,在这里我谢谢你们,是你们给了我动力,是你们又一次给了我不一样的幸福. 在续5中我已回复了,博 ...
- Octopus系列之开发过程各个技术点
自定义了页面周期 使用唯一的一个VelocityEngine全局的静态实例,优化了小泥鳅blog中每次请求都要创建VelocityEngine实例对象,减少了对象的开销 通过UA判断请求来自的设备,从 ...
- Vue 填坑系列(持续更新...)
1.遇到页面显示不更新,数据已更新情况 vue-cli中: this.$nextTick(function () { this.x=x; }) 以js引入vue的网页中: this.$set( ...
随机推荐
- Android 布局简要范例
Android的布局决定着实际的UI界面呈现情况,正是这些UI界面的组合与千变万化,才呈现出了各式各样的风格. 而这些基础的布局框架结构很重要,需要玩的很熟悉.我将以前参考的部分代码示例,所做的相关实 ...
- yii-mail yii 发送邮件
参考网址:http://shoukii0721.iteye.com/blog/1576225 有很多时候我们需要给用户发送邮件,作留言,或者是激活邮件.等用途. 需要注意的是,设置发送的邮件得有SMT ...
- Jconsole 监控tomcat
通过jconsole监控可以获取监控tomcat的相关的数据信息 如何通过代码来获取其中的线程和内存状况呢? 首先要配置好jconsole监控的相关配置,一搜基本就是那一个, 配置配不好的话接下来的工 ...
- iOS - Plist 数据解析
前言 NS_AVAILABLE(10_6, 4_0) @interface NSPropertyListSerialization : NSObject 如果对象是 NSArray 或 NSDicti ...
- JSON学习总结
最近几天使用json的需求比较急迫,所以学习了一下json.此文仅当笔记,以防忘却. 此文主要分为js和java总结: 先介绍json格式: JSON 数据的书写格式是:名称/值对. ***:可以更容 ...
- SQL & PL/SQL 模块总结
SQL 1. 各种function 2. merge 3. connect by PL/SQL 1. pl/sql 寄出 2. 游标 3. procedure 4. function 5. packa ...
- Python学习(13)函数
目录 Python 函数 函数调用 匿名函数 return语句 变量作用域 Python 函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复 ...
- WDS 的两种实现方式
转自:http://blog.chinaunix.net/uid-26527046-id-3627627.html WDS 的两种实现方式 WDS(Wireless Distribution Syst ...
- 记录一下表格用poi的导出word
也是网上找的代码http://53873039oycg.iteye.com/blog/2152009,但是横向合并单元格没成功.只能用很蠢的办法建立了好多table public void fillT ...
- JavaScript的事件对象_概述/this
JavaScript 事件的一个重要方面是它们拥有一些相对一致的特点,可以给你的开发提供更多的强大功能. 最方便和强大的就是事件对象,他们可以帮你处理鼠标事件和键盘敲击方面的情况,此外还可以修改一般事 ...