概述 IIS 7.5 Express 兼具 IIS 7.5 的强大功能与轻型 Web 服务器(例如 ASP.NET 开发服务器,也称为“Cassini”)的便利,可以增强在 Windows 上开发和测试 Web 应用程序的能力。 Microsoft WebMatrix 中包含 IIS 7.5 Express,这套集成工具可以让 Windows 上的 Web 应用程序开发工作变得简单、顺畅。 IIS 7.5 Expre ...
-
[分享]在IIS上给WordPress启用伪静态
主机需要支持Rewrite,并且有相关权限。 修改httpd.ini 全部替换成以下内容 [ISAPI_Rewrite] # 3600 = 1 hour CacheClockRate 3600 RepeatLimit 32 # Protect httpd.ini and httpd.parse.errors files # from accessing through HTTP # Rules to ensure that normal content gets through RewriteRule /sitemap.xml /si ...
-
[分享]关闭IIS7 7.5 错误页详细错误
IIS 7或者IIS7.5在默认设置下是显示详细错误页,这样便将网站的详细路径暴露出来,有可能为网站带来安全隐患
关闭方法也很简单,打开IIS管理器,点击错误页
-
[转帖]MySQL 查询缓存 query_cache_size
MySQL 查询缓存 query_cache_size
从 MySQL 4.0.1 开始,MySQL server 有一个重要的特征:Query Cache。 当在使用中,查询缓存会存储一个 SELECT 查询的文本与被传送到客户端的相应结果。如果之后接收到一个同样的查询,服务器将从查询缓存中检索结果,而不是再次分析和执行这个同样的查询。
注意:查询缓存绝不返回过期数据。当数据被修改后,在查询缓存中的任何相关词条均被转储清除。
在某些表并不经常更改,而你又对它执行大量的相同查询时,查询缓存将是非常有用的。对于许多 WEB 服务器使用大量的动态信息,这是一个很典型的情况。
下面是查询缓存的一个性能数据。(这些结果的产生,是通过在一个 a Linux Alpha 2 x 500 MHz、2GB RAM 和 64MB 查询缓存上执行 MySQL 基准套件和到的):
如果你执行的所有查询均是简单的(比如从表中一行一行的选取);但是仍然是不同的,所以该查询不能被缓冲,查询缓存处于活动时,开销为 13%。这可以被看作是最差的情况。然而,在实际情况下,查询是比我们的简单示例要复杂得多的,所以开销通常显著得低。
在只有一行记录表中搜索一行后,搜索将快 238% 。这可以被认为是接近于对一个被缓冲的查询所期望的最小的加速。
如果你希望禁用查询缓存,设置 query_cache_size=0。禁用了查询缓存,将没有明显的开销。(在配置选项 –without-query-cache 的帮助下,查询缓存可以被排除在外码之外)
6.9.1 查询缓存如何运作
查询在分析之前先被比较,因而SELECT * FROM tbl_name
和Select * from tbl_name
对于查询缓存被当作是不同的查询,因而查询需要严格的一致(字节对字节的),才会被认为是同样的。 另外,如果一个客户端使用一个新的连接协议格式或不同于其它客户端的另一个字符集,一个查询将被视为不同的。使用不同数据库的,使用不同协议版本的,或使用不同的缺省字符串的查询将被认为是不同的查询,并将分别的缓冲。
高速缓冲不对 SELECT CALC_ROWS … 和 SELECT FOUND_ROWS() … 类型的查询起作用,因为找到的行的数目也是被存储在缓冲里的。
如果查询结果被从查询缓存中返回,那么状态变量 Com_select 将不会被增加,但是 Qcache_hits 却会增加。
查看章节 6.9.4 查询缓存的状态和维护。
如果一个表发生的改变 (INSERT, UPDATE, DELETE, TRUNCATE, ALTER 或 DROP TABLE|DATABASE),那么所有这张表使用的缓冲的查询(可能通过一个 MRG_MyISAM 表!)将被得失效,并从缓冲中移除。
InnoDB 表的事务所做的更改将在一个 COMMIT 被完成时,使数据失效。
如果一个查询包括下面的函数,它将不能被缓冲: 函数 函数 函数
User-Defined Functions CONNECTION_ID FOUND_ROWS
GET_LOCK RELEASE_LOCK LOAD_FILE
MASTER_POS_WAIT NOW SYSDATE
CURRENT_TIMESTAMP CURDATE CURRENT_DATE
CURTIME CURRENT_TIME DATABASE
ENCRYPT (只有一个参数调用) LAST_INSERT_ID RAND
UNIX_TIMESTAMP (无参数调用) USER BENCHMARK如果一个查询包含用户变量,引用 MySQL 系统数据库,或下列之一的格式,SELECT … IN SHARE MODE, SELECT … INTO OUTFILE …, SELECT … INTO DUMPFILE … 或 SELECT * FROM AUTOINCREMENT_FIELD IS NULL (检索最后一个插入 ID – ODBC 语句),该查询亦不可以被缓存。
然而,FOUND ROWS() 将返回正确的值,即使先前的查询是从缓存中读取的。
万一一个查询不使用任何表,或使用临时表,或用户对任何相关表有一个列权限,那么查询将不会被缓存。
在一个查询从查询缓存中读取前,MySQL 将检查用户对所有相关的数据库和表有 SELECT 权限。如果不是这种情况,缓存的结果将不能被使用。
6.9.2 查询缓存设置
查询缓存为了 mysqld 添加了几个 MySQL 系统变量,它可以在配置文件中被设置,或在启动 mysqld 时的命令行上设置。query_cache_limit 不缓存大于这个值的结果。(缺省为 1M)
query_cache_min_res_unit 这个变量从 4.1 被引进。 查询的结果 (已被传送到客户端的数据) 在结果检索期间被存储到查询缓存中。因而,数据不会以一个大块地处理。查询缓存在需要时分配块用于处理这个数据,所以当一个块被填充后,一个新的块被分配。甚为内存分配操作是昂贵的,查询缓存以最小的尺寸 query_cache_min_res_unit 分配块。当一个查询执行完成,最后的结果块被修整到实际数据的尺寸大小,以便未使用的内存被释放。
query_cache_min_res_unit 的缺省值为 4 KB,在大多数据情况下已够用了。
如果你有许多查询返回一个较小的结果,缺省的块尺寸可能会引起内存碎片 (显示为一个很大数量的空闲块(Qcache_free_blocks),这将引起查询缓存不得不因缺乏内存(Qcache_lowmem_prunes)而从缓存中删除查询)。在这种情况下,你应该减少 query_cache_min_res_unit。
如果你的主要查询返回的是大的结果集(查看 Qcache_total_blocks 和 Qcache_queries_in_cache),你可以通过增加 query_cache_min_res_unit 来增加性能。然而,要小心不要将它设得太大。query_cache_size 为了存储老的查询结果而分配的内存数量 (以字节指定) 。如果设置它为 0 ,查询缓冲将被禁止(缺省值为 0 )。
query_cache_type 这个可以被设置为 (只能是数字) 选项 含义
0 (OFF, 不缓存或重新得到结果)
1 (ON, 缓存所有的结果,除了 SELECT SQL_NO_CACHE … 查询)
2 (DEMAND, 仅缓存 SELECT SQL_CACHE … 查询)在一个线程(连接)内,查询缓存的行为可以被改变。句法如下所示:
-
[分享]Lighttpd 性能优化 (max-worker,compress,evasive,mod_mem_cache)
#lighttpd默认只启动一个进程工作,但也支持apache那样启动多个进程
server.max-worker = 4
# max-connections == max-fds/2 (maybe /3)
server.max-connections = 1024
server.max-fds = 2048#Maximum number of seconds until an idling keep-alive connection is dropped.
server.max-keep-alive-idle = 5
server.max-keep-alive-requests = 1000#stat() system call caching.
#lighttpd can utilize FAM/Gamin to cache stat call.
#possible values are: disable, simple or fam.
#disable
#simple (default) cache each stat() call for one second.
#fam if FAM or gamin are installed and lighty is linked against those libraries you can use them to control the freshness of the stat-cache.server.stat-cache-engine = “simple”
#Module: mod_alias
alias.url = ( “/cgi-bin/” => “/var/www/servers/www.example.org/cgi-bin/” )#You can add additional aliases by:
alias.url += ( “/content” => “/var/www/servers/www.somecontent.org/” )#compress
#override default set of allowed encodings
compress.allowed-encodings = (”bzip2″, “gzip”, “deflate”)#compress.cache-dir
compress.cache-dir = “/var/www/cache/”#compress.filetype
#mimetypes which might get compressed
#Keep in mind that compressed JavaScript and CSS files are broken in some browsers. Not setting any filetypes will result in no files being compressed.
#Default: not set
compress.filetype = (”text/plain”, “text/html”)#Display compressed files
$HTTP["url"] =~ “\.diff\.gz” {
setenv.add-response-header = ( “Content-Encoding” => “gzip” )
mimetype.assign = ()
}#Compressing Dynamic Content
zlib.output_compression = On
zlib.output_handler = 1PHP
To compress dynamic content with PHP please enable ::zlib.output_compression = On
zlib.output_handler = 1in the php.ini as PHP provides compression support by itself.
mod_compress of lighttpd 1.5 r1992 may not set correct Content-Encoding with php-fcgi.
A solution to that problem would be:1.disable mod_compress when request a php file::
$HTTP["url"] !~ “\.php$” {
compress.filetype = (”text/plain”, “text/html”, “image/gif”, “text/javascript”, “text/css”, “text/xml”)
}2.enable mod_setenv of your lighttpd::
server.modules += ( “mod_setenv” )3.manually set Content-Encoding::
最活跃的读者