关于IIS中开启GZIP压缩的说明

开启GZIP压缩后会将输出到用户浏览器的数据进行压缩处理,这样就会减小通过网络传输的数据量,提高浏览的速度。
在IIS中我们可以通过以下操作开启GZIP压缩功能:

一、启用HTTP压缩:
在IIS管理器中,选中“网站”根节点(不是下面的某个站点,而是整个网站),右键属性,进入“服务”标签,选中HTTP压缩中的“压缩应用程序文件”和“压缩静态文件”,还可以修改压缩的临时目录等设置:
iis-gzip-setup-1

二、添加GZIP服务扩展:
选中“Web 服务扩展”,新建一个新的服务器扩展,名字无所谓,下面添加文件的路径是“C:\Windows\System32\inetsrv\gzip.dll”,然后启用这个扩展:
iis-gzip-setup-2
这时候部分文件是可以压缩的,但是对于许多其他扩展名的文件(如*.js、*.aspx等)却不在压缩范围内。因为默认的可压缩文件并没有这些扩展名,而管理界面中又找不到可以增加扩展名的地方,这时候就需要去修改IIS的配置文件了。

三、修改压缩配置:
在C:\Windows\System32\inetsrv\下面有个MetaBase.xml文件,可以用记事本打开,找到IIsCompressionScheme节点,有三个相同名字的段,分别是deflate,gzip,Parameters,第三段不用管它,前两段有基本相同的参数:
iis-gzip-setup-3
如果需要压缩动态文件,则将HcDoDynamicCompression属性设置为“TRUE”。我们可以在属性HcFileExtensions中添加需要压缩的静态文件扩展名,在属性HcScriptFileExtensions中添加需要压缩的动态文件扩展名。HcDynamicCompressionLevel和HcOnDemandCompLevel两个属性表示需要的压缩率,可选值为0到10,数值越大压缩率越高,可以将其修改为9(性价比相对而言较高)。

四、重启IIS服务

关于WordPress中Yoast SEO的Titles & Metas所用变量的说明

Yoast SEO是WordPress中一款强大的用于SEO优化的插件,在它的Titles & Metas设置中我们可以使用许多预定义的变量(以前后两个%定义)来替换标题和元标签上的数据,以下列出相关变量的说明,以供参考:

%%date%%(文章/页面的日期)
%%title%%(文章/页面的标题)
%%parent_title%%(父页面的标题)
%%sitename%%(站点名称)
%%sitedesc%%(站点描述)
%%excerpt%%(文章/页面的摘要,不存在时使用自动生成的摘要)
%%excerpt_only%%(文章/页面的摘要,不包括自动生成的摘要)
%%tag%%(标签)
%%category%%(分类目录,多个之间采用逗号分隔)
%%category_description%%(分类目录描述)
%%tag_description%%(标签描述)
%%term_description%%(分类描述)
%%term_title%%(分类标题)
%%searchphrase%%(搜索短语)
%%sep%%(标题所用的分隔符)

%%pt_single%%(文章类型,单个)
%%pt_plural%%(文章类型,多个)
%%modified%%(文章/页面的修改时间)
%%id%%(文章/页面的ID)
%%name%%(文章/页面的作者昵称)
%%user_description%%(文章/页面的作者个人说明)
%%userid%%(文章/页面的作者ID)
%%currenttime%%(当前时间)
%%currentdate%%(当前日期)
%%currentday%%(当前日)
%%currentmonth%%(当前月)
%%currentyear%%(当前年)
%%page%%(分页信息,如page 2 of 4)
%%pagetotal%%(总页数)
%%pagenumber%%(当前页码)
%%caption%%(附件标题)
%%focuskw%%(文章焦点关键字)
%%term404%%(404描述)
%%cf_<custom-field-name>%%(文章自定义字段值)
%%ct_<custom-tax-name>%%(文章自定义分类,逗号分隔)
%%ct_desc_<custom-tax-name>%%(自定义分类描述)

关于WordPress中去除Jetpack的Open Graph元标签的说明

在WordPress中如果使用了Jetpack的Sharing或者Publicize功能的话,Jetpack会自动地在网站页面上添加Open Graph的元标签。这些标签的作用是让Facebook能够获取页面的信息从而进行分享。但是对于国内而言,由于无法访问Facebook,该功能就失去了作用,那如何才能去掉这些无用的Open Graph元标签呢?

如果有其他WordPress插件处理了Open Graph元标签,那么Jetpack将自动禁用掉自身的Open Graph元标签。

我们可以在所用主题的functions.php文件中或者在所用的其他WordPress插件中添加以下代码来去除Jetpack的Open Graph元标签:

add_filter ( 'jetpack_enable_open_graph', '__return_false' );

更多信息请参阅:Open Graph — Jetpack for WordPress

关于C#中创建自定义形状控件的说明

在C#应用程序编程中有许多界面控件供我们使用,这些控件的形状都是规则的矩形,但是为了美观友好的UI体验,有时我们需要创建一些不规则的自定义形状的控件。
同样在C#中,类型Region是描述控件显示区域的类,类型GraphicsPath则表示一系列相互连接的直线和曲线,通过构造出闭合的不规则的GraphicsPath曲线来创建对应形状区域的Region对象,并设置控件的显示区域为此Region对象,就可以使控件按照GraphicsPath对象描述的形状来显示。
下面示例创建一个中间镂空的圆环控件(当然我们也可以添加其他任何形状的边界到GraphicsPath对象中,从而创建形状更加复杂的自定义控件):

一、创建一个原始的空白窗体Form:
csharp-region-control-1

二、在窗体Form的构造函数中添加如下代码:

// 创建用户控件
UserControl userControl = new UserControl();
// 设置用户控件大小
userControl.Width = 200;
userControl.Height = 200;
// 设置用户控件在父控件中居中显示
userControl.Location = new Point((this.ClientSize.Width - userControl.Width) / 2, (this.ClientSize.Height - userControl.Height) / 2);
// 设置用户控件背景色为红色
userControl.BackColor = Color.Red;
// 创建GraphicsPath对象
GraphicsPath graphicsPath = new GraphicsPath();
// 定义外部圆形区域
Rectangle outBounds = new Rectangle(0, 0, 200, 200);
// 定义内部圆形区域
Rectangle inBounds = new Rectangle(50, 50, 100, 100);
// 添加内外圆形区域到GraphicsPath对象中
graphicsPath.AddEllipse(outBounds);
graphicsPath.AddEllipse(inBounds);
// 设置用户控件Region对象
userControl.Region = new Region(graphicsPath);
// 将用户控件添加到窗体中
this.Controls.Add(userControl);

三、运行窗体Form,其中红色的圆环控件就是我们创建的自定义形状的控件:
csharp-region-control-2

更多信息请参阅:GraphicsPath 类 (System.Drawing.Drawing2D)Region 类 (System.Drawing)

关于C#中获取屏幕图像的说明

获取显示器屏幕当前显示的画面在许多场景中都会用到,比例截图。在C#中我们可以通过Graphics对象获取屏幕图像:

// 获取主屏幕的显示范围
Rectangle bounds = Screen.PrimaryScreen.Bounds;
// 创建大小与主屏幕一直的空图像
Bitmap bitmap = new Bitmap(bounds.Width, bounds.Height);
// 通过图像创建Graphics对象
Graphics graphics = Graphics.FromImage(bitmap);
// 将屏幕图片完整绘制到图像上
graphics.CopyFromScreen(Point.Empty, Point.Empty, bounds.Size);
// 释放Graphics对象
graphics.Dispose();
// 返回屏幕图像
return bitmap;

获取到屏幕图像后,我们就可以根据需求对该图像进行后续处理了。