当前位置: 操作系统/服务器>linux
本页文章导读:
▪清除指定squid缓存文件的脚本代码分享
squid会根据用户请求网页的URL进行哈希,生成缓存文件,存放在某一个目录中。squid启动之后,将在内存中建立一个哈希表,记录硬盘中缓存文件配置的情形。 对于类似http:///index.html之.........
▪smarty实现PHP静态化的两种方法分享
方法一: 代码如下: <?php require_once("./config/config.php"); ob_start(); $id=$_GET[id]; $sql="select * from table_name where id='$id'"; $result=mysql_query($sql); $rs=mysql_fetch_object($result); $smarty->assign("showtitle",$rs->ti.........
▪.htaccess文件写法之作用范围
有太多的朋友会碰到一个问题,那就是htaccess文件冲突的问题,比如说,一个站点,全站是用伪静态,并且是用的虚拟主机,那就必须要用.htaccess文件规则来实现,同时用CMS文件做门户用DZ.........
[1]清除指定squid缓存文件的脚本代码分享
来源: 互联网 发布时间: 2013-12-24
squid会根据用户请求网页的URL进行哈希,生成缓存文件,存放在某一个目录中。squid启动之后,将在内存中建立一个哈希表,记录硬盘中缓存文件配置的情形。
对于类似http:///index.html之类的网页,squid只会生成一个缓存文件。可以用squid附带的squidclient工具清除:
squidclient -m PURGE -p 80 “http:///index.html”
而对于带有参数的网页,例如新浪播客的Flash播放器http://vhead.blog.sina.com.cn/player/outer_player.swf?auto=0&vid=4469852&uid=1278987704,因”?”后面的参数不同,导致URL也不同,squid会生成多个缓存文件,哈希分散存放在不同的目录。如果修改了这个outer_player.swf文件,要更新squid缓存就要去清除不同目录下及内存中的很多个缓存文件,十分麻烦,于是我编写了一个Linux下的shell脚本,去完成这件麻烦的事:
脚本文件名:clear_squid_cache.sh
下载:
clear_squid_cache.sh#!/bin/sh
squidcache_path="/cache/"
squidclient_path="/usr/local/squid/bin/squidclient"
grep -a -r $1 $squidcache_path/* | strings | grep "http:" | awk -F'http:' '{print "http:"$2;}' > cache_list.txt
for url in `cat cache_list.txt`; do
$squidclient_path -m PURGE -p 80 $url
done
注意:请赋予clear_squid_cache.sh可执行权限(命令:chmod +x ./clear_squid_cache.sh)。请确保脚本所在目录可写。
设置:
squidcache_path= 表示squid缓存目录的路径
squidclient_path= 表示squidclient程序所在的路径,默认为squid安装目录下的bin/squidclient
用法:
1、清除所有Flash缓存(扩展名.swf):
./clear_squid_cache.sh swf
2、清除URL中包含sina.com.cn的所有缓存:
./clear_squid_cache.sh
3、清除文件名为zhangyan.jpg的所有缓存:
./clear_squid_cache.sh test.jpg
效率:
经测试,在DELL 2950上清除26000个缓存文件用时2分钟左右。平均每秒可清除缓存文件177个。
对于类似http:///index.html之类的网页,squid只会生成一个缓存文件。可以用squid附带的squidclient工具清除:
squidclient -m PURGE -p 80 “http:///index.html”
而对于带有参数的网页,例如新浪播客的Flash播放器http://vhead.blog.sina.com.cn/player/outer_player.swf?auto=0&vid=4469852&uid=1278987704,因”?”后面的参数不同,导致URL也不同,squid会生成多个缓存文件,哈希分散存放在不同的目录。如果修改了这个outer_player.swf文件,要更新squid缓存就要去清除不同目录下及内存中的很多个缓存文件,十分麻烦,于是我编写了一个Linux下的shell脚本,去完成这件麻烦的事:
脚本文件名:clear_squid_cache.sh
下载:
代码如下:
clear_squid_cache.sh#!/bin/sh
squidcache_path="/cache/"
squidclient_path="/usr/local/squid/bin/squidclient"
grep -a -r $1 $squidcache_path/* | strings | grep "http:" | awk -F'http:' '{print "http:"$2;}' > cache_list.txt
for url in `cat cache_list.txt`; do
$squidclient_path -m PURGE -p 80 $url
done
注意:请赋予clear_squid_cache.sh可执行权限(命令:chmod +x ./clear_squid_cache.sh)。请确保脚本所在目录可写。
设置:
squidcache_path= 表示squid缓存目录的路径
squidclient_path= 表示squidclient程序所在的路径,默认为squid安装目录下的bin/squidclient
用法:
1、清除所有Flash缓存(扩展名.swf):
./clear_squid_cache.sh swf
2、清除URL中包含sina.com.cn的所有缓存:
./clear_squid_cache.sh
3、清除文件名为zhangyan.jpg的所有缓存:
./clear_squid_cache.sh test.jpg
效率:
经测试,在DELL 2950上清除26000个缓存文件用时2分钟左右。平均每秒可清除缓存文件177个。
[2]smarty实现PHP静态化的两种方法分享
来源: 互联网 发布时间: 2013-12-24
方法一:
代码如下:
<?php
require_once("./config/config.php");
ob_start();
$id=$_GET[id];
$sql="select * from table_name where id='$id'";
$result=mysql_query($sql);
$rs=mysql_fetch_object($result);
$smarty->assign("showtitle",$rs->title);
$smarty->assign("showcontent",$rs->content);
$smarty->display("content.html");
$this_my_f= ob_get_contents();
ob_end_clean();
$filename = "$id.html";
tohtmlfile_cjjer($filename,$this_my_f);
// 文件生成函数
function tohtmlfile_cjjer($file_cjjer_name,$file_cjjer_content){
if (is_file ($file_cjjer_name)){
@unlink ($file_cjjer_name); //存在,就删除
}
$cjjer_handle = fopen ($file_cjjer_name,"w"); //创建文件
if (!is_writable ($file_cjjer_name)){ //判断写权限
return false;
}
if (!fwrite ($cjjer_handle,$file_cjjer_content)){
return false;
}
fclose ($cjjer_handle); //关闭指针
return $file_cjjer_name; //返回文件名
}
?>
方法二:
smarty中有一个获取模板页内容方法fetch(), 它的声明原形是这样的:
代码如下:
<?php
function fetch($resource_name, $cache_id = null,
$compile_id = null, $display = false)
?>
第一个参数为模板名称, 第二个参数为缓存的id, 第三个参数为编译id, 第四个参数为是否显示模板内容. 生成静态页我们就需要用到这个方法.
代码如下:
<?php
$smarty = new Smarty();
//其它模板替换语法...
//下面这句取得页面中所有内容, 注意最后一个参数为false
$content = $smarty->fetch('模板名称.tpl', null, null, false);
//下面将内容写入至一个静态文件
$fp = fopen('news.html', 'w');
fwrite($fp, $content);
fclose($fp);
//OK, 到这里这个news.html静态页就生成了, 你可以处理你下一步的工作了
?>
[3].htaccess文件写法之作用范围
来源: 互联网 发布时间: 2013-12-24
有太多的朋友会碰到一个问题,那就是htaccess文件冲突的问题,比如说,一个站点,全站是用伪静态,并且是用的虚拟主机,那就必须要用.htaccess文件规则来实现,同时用CMS文件做门户用DZ做BBS,用WP做BLOG,我只知道WP与DZ程序的静态化就会存在着冲突,可能会导致DZ的静态化文件失效。这样的话,就用到了htaccess文件的作用范围。
下面写一个最基本,也是最标准的htaccess文件:
# BEGIN
<IfModule mod_rewrite.c>
RewriteBase /products
RewriteEngine on
RewriteRule ^index-page([0-9]*)(/)?$ index.php?page=$1
RewriteRule ^([0-9]+)(/)?$ products.php?id=$1
</IfModule>
# END
此文件的RewriteBase 属性就是作用范围,不单单是.htaccess文件放置位置,这个属性是一个绝对路径,当然也是.htaccess的存放的路径,而下面的所有规则将相对于此路径生效。
这样的话,WP与DZ冲突的问题就可以解决了,可以把WP的htaccess文件放在blog下,然后把bbs目录下放上dz的htaccess。当然,如果全是放在了根目录下,可能还会冲突,不过,又有几个人把不同样的程序放在一个目录下呢?那样不但不容易管理,对以后程序的升级也带来很多的麻烦。
下面写一个最基本,也是最标准的htaccess文件:
代码如下:
# BEGIN
<IfModule mod_rewrite.c>
RewriteBase /products
RewriteEngine on
RewriteRule ^index-page([0-9]*)(/)?$ index.php?page=$1
RewriteRule ^([0-9]+)(/)?$ products.php?id=$1
</IfModule>
# END
此文件的RewriteBase 属性就是作用范围,不单单是.htaccess文件放置位置,这个属性是一个绝对路径,当然也是.htaccess的存放的路径,而下面的所有规则将相对于此路径生效。
这样的话,WP与DZ冲突的问题就可以解决了,可以把WP的htaccess文件放在blog下,然后把bbs目录下放上dz的htaccess。当然,如果全是放在了根目录下,可能还会冲突,不过,又有几个人把不同样的程序放在一个目录下呢?那样不但不容易管理,对以后程序的升级也带来很多的麻烦。
最新技术文章: