代码片段,压缩和CurrentCulture 设定

来源:互联网 发布:js清空tr里的数据 编辑:程序博客网 时间:2024/05/17 22:30
public class BasePage : Page {

        
public BasePage() {
        }


        
protected override void OnLoad(EventArgs e) {
            
base.OnLoad(e);
            
// Request might not be initialized -> use HttpContext
            string ua = HttpContext.Current.Request.UserAgent != null ? HttpContext.Current.Request.UserAgent.ToLower() : "";
            
if(Settings.EnableHttpCompression && !ua.Contains("konqueror"&& !ua.Contains("safari")) {
                
if(Request.Headers["Accept-encoding"!= null && Request.Headers["Accept-encoding"].Contains("gzip")) {
                    Response.Filter 
= new GZipStream(Response.Filter, CompressionMode.Compress, true);
                    Response.AppendHeader(
"Content-encoding""gzip");
                    Response.AppendHeader(
"Vary""Content-encoding");
                    
//Response.Write("HTTP Compression Enabled (GZip)");
                }

                
else if(Request.Headers["Accept-encoding"!= null && Request.Headers["Accept-encoding"].Contains("deflate")) {
                    Response.Filter 
= new DeflateStream(Response.Filter, CompressionMode.Compress, true);
                    Response.AppendHeader(
"Content-encoding""deflate");
                    Response.AppendHeader(
"Vary""Content-encoding");
                    
//Response.Write("HTTP Compression Enabled (Deflate)");
                }

            }

        }


        
protected override void InitializeCulture() {
            
if(Request.Cookies[Settings.CultureCookieName] != null{
                HttpCookie cookie 
= Request.Cookies[Settings.CultureCookieName];
                
string culture = cookie["C"];
                Thread.CurrentThread.CurrentCulture 
= new CultureInfo(culture);
                Thread.CurrentThread.CurrentUICulture 
= new CultureInfo(culture);
            }

            
else {
                
try {
                    
if(Settings.DefaultLanguage.Equals("-")) {
                        Thread.CurrentThread.CurrentCulture 
= new CultureInfo("en-US");
                        Thread.CurrentThread.CurrentUICulture 
= new CultureInfo("en-US");
                    }

                    
else {
                        Thread.CurrentThread.CurrentCulture 
= new CultureInfo(Settings.DefaultLanguage);
                        Thread.CurrentThread.CurrentUICulture 
= new CultureInfo(Settings.DefaultLanguage);
                    }

                }

                
catch {
                    Thread.CurrentThread.CurrentCulture 
= new CultureInfo("en-US");
                    Thread.CurrentThread.CurrentUICulture 
= new CultureInfo("en-US");
                }

            }

            
//Response.Write("Culture: " + Thread.CurrentThread.CurrentCulture.Name + "<br />");
            
//Response.Write("UICulture: " + Thread.CurrentThread.CurrentUICulture.Name + "</br >");
        }


    }
 
public static class Compressor {

        
/// <summary>
        
/// Compresses data.
        
/// </summary>
        
/// <param name="data">The data to compress.</param>
        
/// <returns>The compressed data.</returns>

        public static byte[] Compress(byte[] data) {
            MemoryStream output 
= new MemoryStream();
            GZipStream gzip 
= new GZipStream(output, CompressionMode.Compress, true);
            gzip.Write(data, 
0, data.Length);
            gzip.Close();
            
return output.ToArray();
        }


        
/// <summary>
        
/// Decompresses data.
        
/// </summary>
        
/// <param name="data">The data to decompress.</param>
        
/// <returns>The decompressed data.</returns>

        public static byte[] Decompress(byte[] data) {
            MemoryStream input 
= new MemoryStream();
            input.Write(data, 
0, data.Length);
            input.Position 
= 0;
            GZipStream gzip 
= new GZipStream(input, CompressionMode.Decompress, true);
            MemoryStream output 
= new MemoryStream();
            
byte[] buff = new byte[64];
            
int read = -1;
            read 
= gzip.Read(buff, 0, buff.Length);
            
while(read > 0{
                output.Write(buff, 
0, read);
                read 
= gzip.Read(buff, 0, buff.Length);
            }

            gzip.Close();
            
return output.ToArray();
        }


    }