我们在前面文章说过,Google不会对你的设定照单全收,如果你的标题不被Google喜欢,他是会自行修改的。为什么标题会被Google修改呢? 为什么标题不被Google喜欢呢?
Google在“Site title and description”解释到了我们的疑问,内文说到:“Google‘s generation of page titles and descriptions (or ”snippets“) is completely automated and takes into account both the content of a page as well as references to it that appear on the web. ” Google对于标题与描述的产生是完全自动的,他会参考页面的内容以及该页面的参考资料来产生。
有时候,我们不想在回送时保持列表控件的值不变。除了对带宽的考虑外,还有其他一些原因促使我们在每次加载页时重新创建数据集,或重新绑定列表控件。最简单的情况是当页并没有实际包括<form>的时候,他们不是交互式页,因此也不必将值传送回服务器——我们只要加载页并进行浏览就可以了。在这种情况下没有VIEWSTATE,也没有用户交互。
然而,如果页包含<form>部分,那么列表控件的值将自动包括在VIEWSTATE中。当然,如果列表控件包含交互元素,如必须被传送回服务器的按钮或编辑控件,那么该控件必须位于HTML<form>上。这一点适用于排序和筛选,其栏标题自动被作为LinkButton控件显示。无论如何对行进行排序和筛选,我们都必须每次将数据网格重新绑定到DataView对象。我们实际上是在每次回送时重新创建整个DataSet和DataView,因此不必在VIEWSTATE中保存值。由于这一原因,我们在控件定义中将DataGrid对象的EnableViewState属性设置为False,以便该控件的内容不包括在VIEWSTATE中。
我们可以使用“页跟踪”来查看某页的VIEWSTATE中包括多少数据。在Page提示符中添加Trace=”True”,然后在本地运行该页(即运行在web服务器本身上的浏览器中)。这样就做到了禁止列表控件值在回送时保持了不变的状况,当然,我们还要在浏览器中了解到每次发送给客户端的准确数据量。
像在下拉菜单中选择省、市这样的操作,我们一直用ASP来创建生成列表函数,把它们保存在一个Include文件中,用的时候就加载。这样做确实有个不好处,就是每次生成一个选择列表时,服务器就必须加载整个Include文件,显得浪费系统。如果使用存储过程来生成选择列表,那么操作起来就会简单的多了。
确实,通常我们使用Include文件来做这一切,这样,ASP需要额外的时间在服务器上加载并处理这些Include文件,每次生成一个选择列表时,都必须加载整个Include文件。但我们也可以把这些函数放在存储过程了,让存储过程来生成选择清单。看看生成一个选择清单的记录的具体实现方法: