网站的重定向,通常用的有 301 和 302,301是永久重定向,是对SEO友好的,有利于保持原域名和新域名之间的PR转移及流量数据等。
Asp.Net 中实现301重定向的代码,也是比较简单的,举个例子:
原来的域名是 www.abc.com, 现在要将对这个域名的访问,全部重定向到 www.zu14.cn;
只需在 需要转向的页面里,
protected void Page_Load(object sender, EventArgs e)
{
Response.Clear();
Response.StatusCode = 301;
Response.Status = "301 Moved Permanently";
Response.AddHeader("Location","http://www.zu14.cn}");
=================================================
常用的重定向方式有: 301 redirect, 302 redirect 与 meta fresh:301 redirect: 301代表永久性转移(Permanently Moved),301重定向是网页更改地址后对搜索引擎友好的最好方法,只要不是暂时搬移的情况,都建议使用301来做转址。
302 redirect: 302代表暂时性转移(Temporarily Moved ),在前些年,不少Black Hat SEO曾广泛应用这项技术作弊,目前,各大主要搜索引擎均加强了打击力度,象Google前些年对Business.com以及近来对BMW德国网站的惩罚。即使网站客观上不是spam,也很容 ......
1. 数据库访问性能优化
数据库的连接和关闭
访问数据库资源需要创建连接、打开连接和关闭连接几个操作。这些过程需要多次与数据库交换信息以通过身份验证,比较耗费服务器资源。 ASP.NET中提供了连接池(Connection Pool)改善打开和关闭数据库对性能的影响。系统将用户的数据库连接放在连接池中,需要时取出,关闭时收回连接,等待下一次的连接请求。
连接池的大小是有限的,如果在连接池达到最大限度后仍要求创建连接,必然大大影响性能。因此,在建立数据库连接后只有在真正需要操作时才打开连接,使用完毕后马上关闭,从而尽量减少数据库连接打开的时间,避免出现超出连接限制的情况。
使用存储过程
存储过程是存储在服务器上的一组预编译的SQL语句,类似于DOS系统中的批处理文件。存储过程具有对数据库立即访问的功能,信息处理极为迅 速。使用存储过程可以避免对命令的多次编译,在执行一次后其执行规划就驻留在高速缓存中,以后需要时只需直接调用缓存中的二进制代码即可。
另外,存储过程在服务器端运行,独立于ASP.NET程序,便于修改,最重要的是它可以减少数据库操作语句在网络中的传输。
优化查询语句
ASP.NET中ADO连接消耗的资源相当 ......
1. 当不需要使用Session的时候请关闭
关闭Session当不需要使用的时候
• 若要禁用页的会话状态,请将@ Page 指令中的EnableSessionState 属性设置为false。例如, <%@ Page EnableSessionState="false" %>。
• 注意如果页需要访问会话变量,但不打算创建或修改它们,则将@ Page 指令中的EnableSessionState 属性设置为ReadOnly。还可以禁用XML Web services 方法的会话状态。有关更多信息,请参见使用ASP.NET 和XML Web services 客户端创建的XML Web services。
• 若要禁用应用程序的会话状态,请在应用程序Web.config 文件的sessionstate 配置节中将mode 属性设置为off。例如, <sessionstate mode="off" />。
2.尽量使用客户端脚本
虽然您很可能希望尽量多地使用Web 窗体页框架的那些节省时间和代码的功能,但在某些情况下却不宜使用ASP.NET 服务器控件和回发事件处理。通常,只有在检索或存储数据时,您才需要启动到服务器的往返过程。多数数据操作可在这些往返过程间的客户端上进行。例如,从HTML窗体验证用户输入经常可在数据提交到服务器之前在客户端进行。通常,如果 ......
ASP.NET程序中常用的三十三种代码
1. 打开新的窗口并传送参数:
传送参数:
response.write("<script>window.open(’*.aspx?id="+this.DropDownList1.SelectIndex+"&id1="+...+"’)</script>")
接收参数:
string a = Request.QueryString("id");
string b = Request.QueryString("id1");
2.为按钮添加对话框
Button1.Attributes.Add("onclick","return confirm(’确认?’)");
button.attributes.add("onclick","if(confirm(’are you sure...?’)){return true;}else{return false;}")
3.删除表格选定记录
int intEmpID = (int)MyDataGrid.DataKeys[e.Item.ItemIndex];
string deleteCmd = "Delete from Employee where emp_id = " + intEmpID.ToString()
4.删除表格记录警告
private void DataGrid_ItemCreated(Object sender,DataGridItemEventArgs e)
{
switch(e.Item.ItemType)
{
case ListItemType.I ......
ASP.NET程序中常用的三十三种代码
1. 打开新的窗口并传送参数:
传送参数:
response.write("<script>window.open(’*.aspx?id="+this.DropDownList1.SelectIndex+"&id1="+...+"’)</script>")
接收参数:
string a = Request.QueryString("id");
string b = Request.QueryString("id1");
2.为按钮添加对话框
Button1.Attributes.Add("onclick","return confirm(’确认?’)");
button.attributes.add("onclick","if(confirm(’are you sure...?’)){return true;}else{return false;}")
3.删除表格选定记录
int intEmpID = (int)MyDataGrid.DataKeys[e.Item.ItemIndex];
string deleteCmd = "Delete from Employee where emp_id = " + intEmpID.ToString()
4.删除表格记录警告
private void DataGrid_ItemCreated(Object sender,DataGridItemEventArgs e)
{
switch(e.Item.ItemType)
{
case ListItemType.I ......
Mysql的connector/net5.0下载地址:
http://dev.mysql.com/get/Downloads/Connector-Net/mysql-connector-net-5.0.6.zip/from/pick
安装好以后,
点属性,然后点查找目标,点向上一层目录,找到Binaries\.NET 2.0,然后将这个文件复制到你的工程目录下,一般这样的DLL文件会保存到bin目录下.
在代码页里输入using Mysql.Data.MysqlClient;然后再在Page_Load函数里写MysqlConnection,在单词写到一半时提示就出来了,下面的就不用写了吧?都已经出现”代码智能完成了”,随便写一段代码试试就可以了,和Sqlserver完全相似.
下面提供两段代码供参考,一个代码页
default2.aspx.cs下的代码:
C#代码
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using MySql.Data.MySqlClient;
public partial class Default2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
s ......
Mysql的connector/net5.0下载地址:
http://dev.mysql.com/get/Downloads/Connector-Net/mysql-connector-net-5.0.6.zip/from/pick
安装好以后,
点属性,然后点查找目标,点向上一层目录,找到Binaries\.NET 2.0,然后将这个文件复制到你的工程目录下,一般这样的DLL文件会保存到bin目录下.
在代码页里输入using Mysql.Data.MysqlClient;然后再在Page_Load函数里写MysqlConnection,在单词写到一半时提示就出来了,下面的就不用写了吧?都已经出现”代码智能完成了”,随便写一段代码试试就可以了,和Sqlserver完全相似.
下面提供两段代码供参考,一个代码页
default2.aspx.cs下的代码:
C#代码
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using MySql.Data.MySqlClient;
public partial class Default2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
s ......
在asp.net中用js控制弹出一个模态窗口,模态窗口却不能分页。单独运行此页分页效果是可以达到的。
我的弹出模态窗口的代码是:
var param=window.showModalDialog("../StorageList.aspx",null,"height=100px;width=950px;status=yes;toolbar=no,location=nu");
不知道为什么会出现这种效果?
解决方法是在要弹出的模态窗口StorageList.aspx页面的顶部添加如下语句就可解决问题:
<base target="_self" /> ......