禁止ajax缓存的方法(ASP/PHP/JSP/html/js)
ajax缓存有好处,但也有坏处,缓存有时候会导致误操作,影响用户体验,若你的WEB项目不需要ajax缓存功能,可按下述方法来禁止ajax缓存。
一、在ASP中禁止ajax缓存:
'放在ASP网页最开头部分
代码如下 | 复制代码 |
Response.expires=0 Response.addHeader("pragma","no-cache") Response.addHeader("Cache-Control","no-cache, must-revalidate") |
二、在PHP中禁止Ajax缓存:
代码如下 | 复制代码 |
//放在PHP网页开头部分 header("Expires: Thu, 01 Jan 1970 00:00:01 GMT"); header("Cache-Control: no-cache, must-revalidate"); header("Pragma: no-cache"); |
三、在JSp中禁止ajax缓存:
代码如下 | 复制代码 |
//放在JSP网页最开头部分 response.addHeader("Cache-Control", "no-cache"); response.addHeader("Expires", "Thu, 01 Jan 1970 00:00:01 GMT"); |
四、通过给网页添加随机字符强制更新:如
代码如下 | 复制代码 |
var url = 'http://url/'; url += '?temp=' + new Date().getTime(); url += '?temp=' + Math.random(); |
五、若是静态HTML,可添加HTTP headers头禁止缓存,比如:
代码如下 | 复制代码 |
<meta http-equiv="pragma" content="no-cache" /> <meta http-equiv="Cache-Control" content="no-cache, must-revalidate" /> <meta http-equiv="expires" content="Thu, 01 Jan 1970 00:00:01 GMT" /> <meta http-equiv="expires" content="0" /> |
六、可以在XMLHttpRequest发送请求之前加上以下代码禁止ajax缓存:
代码如下 | 复制代码 |
XMLHttpRequest.setRequestHeader("If-Modified-Since","0"); |
七、jQuery ajax Load禁止
在jQuery提供一个防止ajax使用缓存的方法,把下面的语句加在head的javascript文件里,就可以解决问题。
代码如下 | 复制代码 |
$.ajaxSetup ({ |
小结,不过现在都是使用jquery+ajax/" target="_blank">jquery ajax了我们如果不希望缓存可以直接设置 cache: false 这样可以解决post ,get等提交数据方式哦。
比较字符串是任何编程语言的字符串处理功能中重要的特性之一。在PHP中除了可以使用比较运算符号(==、<或>)加以比较外,还提供了一系列的比较函数,使PHP可以进行更复杂的字符串比较。如strcmp()、strcasecmp()和strnatcmp()等函数。
1.按字节顺序进行字符串比较
要按字节顺序进行字符串的比较,可以使用strcmp()和strcasecmp()两个函数,其中函数strcasecmp()可以忽略字符串中字母的大小写进行比较。这两个函数的原型如下所示:
代码如下 | 复制代码 |
in strcmp(string str1,string str2) //区分字符串中字母大小写地比较 |
这两个函数的用法相似,都需要传入进行比较的两个字符串参数。可以对输入的str1和str2两字符串,按照字节的ASCII值从两个字符串的首字节开始比较,如果相等则进入下一个字节的比较,直至结束比较。返回以下三个值之一:
★如果str1等于str2则返回0。
★如果str1大于str2则返回1。
★如果str1小于str2则返回-1。
在下面的程序中通过比较后的返回值判断两个比较字符串大小。使用strcmp()函数区分字符串中字母大小写的比较,使用strcasecmp()函数忽略字符串中字母大小写的比较。当然没有实际意义。代码如下所示:
代码如下 | 复制代码 |
<?php $username = "Admin"; $password = "lampBrother"; //不区分大小写的比较,如果两个字符串相等返回0 if(strcasecmp($userName,"admin")== 0){ echo "用户名存在"; } //将两个比较的字符串相应的函数转成全大写或全小写后,也可以实现不区分大小写的比较 if(strcasecmp(strtolower($userName),strtolower("admin")) == 0){ echo "用户名存在"; } //区分字符串中字母的大小写比较 switch(strcmp($password,"lampbrother")){ case 0: echo "两个字符串相等<br>"; break; case 1: echo "第一个字符串大于第二个字符串<br>"; break; case -1: echo "第一个字符串小于第二个字符串<br>"; break; } ?> |
2.按自然排序进行字符串比较
除了可以按照字节位的字典顺序进行比较外,PHP还提供了按照“自然排序”法对字符串进行比较。所谓自然排序,是指按照人们的日常生活中的思维习惯进行排序,即将字符串中的数字部分按照数字大小进行比较。例如按照字节比较时“4”大于“33”,因为“4”大于“33”中的第一个字符,而按照自然排序法则“33”大于“4”。使用strnatcmp()函数按自然排序法比较两个字符串,该函数对大小写敏感,其使用格式与strcmp()函数相似。
在下面的例子中,对一个数组中带有数字的文件名,使用冒泡排序法通过两种比较方法排序。代码如下所示:
代码如下 | 复制代码 |
<?php //定义一个包含数字值的数组 $files = array("file11.txt","file22.txt","file1.txt","file2.txt"); function mySort($arr,$select = false){ for($i=0;$i<count($arr);$i++){ for($j;$j<count($arr)-1;$j++){ //如果第二个参数为ture则使用strcmp()函数比较大小 if($select){ //前后两个值比较结果大于0则交换位置 if(strcmp($arr[$j],$arr[j+1])>0){ $tmp = $arr[$j]; $arr[$j] = $arr[$j+1]; $arr[$j+1] = $tmp; } //如果第二个参数为false则使用strnatcmp()函数比较大小 }else{ //如果比较结果大于0交换位置 if(strnatcmp($arr[$j],$arr[$j+1])>0){ $tmp = $arr[$j]; $arr[$j] = $arr[$j+1]; $arr[$j+1]; = $tmp; } } } } return $arr; //排序后的数组 } print_r(mySort($files,true)); //选择按字典顺序排序: file1.txt file11.txt file2.txt file22.txt print_r(mySort($files,false)); //选择按自然顺序排序:file1.txt file2.txt file11.txt file22.txt ?> |
在PHP中也提供了这个函数忽略大小写的版本的函数strnatcasecmp()用法与strnatcmp()函数相同。
除了上面利用函数比较我们还可以使用“===”来判断,至于它和“==”的区别
一般能用 !=, == 比较两个对象是否相等,只所以说是两个对象,是因为他们不一定全部为字符串,也能为整型等等。
如果用 !==,===(能看到多了一个等号)比较的话,两个对象的类型要严格相等才能返回true;否则用==,!=则会将字符串自动转换成相应的类型,以便进行比较.
代码如下 | 复制代码 |
22 == "22"; // 返回 true 22 === "22"; // 返回false |
正因为这样,所以我们的程式时常会发生一些想不到的“意外”:
代码如下 | 复制代码 |
0 == "我爱你"; // 返回true 还有一种比较方法 var_dump("1" == "1e0"); |
等等;
对, 也许你会说在PHP手册的附录中有一部分关于这个问题的总结. 问题是,这只是知其然, 那么所以然是什么呢?
今天就有一个网友问了我一个问题:
代码如下 | 复制代码 |
|
这两个的结果为什么不一样啊.
也就是说, 上面的等式a要成立, 那么唯一的解释就是PHP讲他们双发都当作int来比较.
但是, var_dump(“1e0″),或者var_dump(“1″),都是string啊.
因为PHP不区分类型, 所以她采用一个策略, 当你的变量看起来是一个数字的时候, 那么她就认为这个变量是一个数字.
简单来说, numeric_string就是表示数字的字符串:
也就是说,如下的比较结果都是真:
代码如下 | 复制代码 |
var_dump("1" == "1e0"); |
呵呵, 读者们遇到过这个问题的困扰么?
代码如下 | 复制代码 |
if("608E-4234" == "272E-3063"){ echo "oh shit! they're equal!\n"; }else{ echo "obviously, isn't?\n"; } |
PHP开发Tips:如果想要判断两个字符串是否相等,使用 === 而不是 ==。
上传文件用得最多的是ajax了,现在这里我们可以使用iframe 模仿了,下面一聚教程小伙伴就来为各位同学整理一个frame实现无刷新上传文件例子,希望能帮助到各位朋友哦。使用label的for属性来取代js的event转移,解决IE下“SCRIPT5: 拒绝访问”的问题;
html代码
代码如下 | 复制代码 |
<!DOCTYPE HTML> |
php处理程序
代码如下 | 复制代码 |
<?php |
简单总结:这个其实很简单在表单中我们action设置为上传php的模板文件,然后我们再在表单target 打开方式设置为iframe的name即可。
KMP算法是一个比较高级的算法了,加了改进了,下面我们来在php中实现KMP算法,希望例子对各位同学会带来帮助哦。kmp算法是一种改进的字符串匹配算法,由D.E.Knuth与V.R.Pratt和J.H.Morris同时发现,因此人们称它为克努特——莫里斯——普拉特操作(简称KMP算法)。KMP算法的关键是根据给定的模式串W1,m,定义一个next函数。next函数包含了模式串本身局部匹配的信息
例子
代码如下 | 复制代码 |
<?php 字符串匹配KMP算法的PHP语言实现 */ function KMP($str) { function KMPMatch($src, $par) { if ($j == $parLen) return $i-$j; echo $i." ".$j. " {$src[$i]}-{$par[$j]} <BR>"; $j++; $src = 'BBC ABCDAB ABCDABCDABDE'; echo "部分匹配值:", implode(" ", KMP($par)), "<BR>"; echo KMPMatch($src, $par), "<BR>"; 部分匹配值:0 0 0 0 1 2 0 0 0 B-A 1 0 B-A 2 0 C-A 3 0 -A 4 0 A-A 5 1 B-B 6 2 C-C 7 3 D-D 8 4 A-A 9 5 B-B 10 6 -D 10 2 -C 10 0 -A 11 0 A-A 12 1 B-B 13 2 C-C 14 3 D-D 15 4 A-A 16 5 B-B 17 6 C-D 17 2 C-C 18 3 D-D 19 4 A-A 20 5 B-B 21 6 D-D 15 */ |
使用GD库中提供的函数动态绘制完成图像以后,就需要输出到浏览器或者将图像保存起来。在PHP中,可以将动态绘制完成的画布,直接生成GIF、JPEG、PNG和WBMP四种图像格式。可以通过调用下面四个函数生成这些格式的图像:
bool imagegif(resource $image[,string $filename]) //以GIF格式将图像输出
bool imagejpeg(resource $image[,string $filename[,int $quality]]) //以JPEG格式将图像输出
bool imagepng(resource $image[,string $filename]) //以PNG格式将图像输出
bool imagewbmp(resource $image[,string $filename[,int $foreground]]) //以WBMP格式将图像输出
以上四个函数的使用类似,前两个参数的使用是相同的。第一个参数$image为必选项,是前面介绍的图像引用句柄。如果部位这些函数提供其他参数,访问时则直接将原图像流出,并在浏览器使用中显示动态输出的图像。但一定要在输出之前,使用header()函数发送标头信息,用来通知浏览器使用正确的MIME类型对接收的内容进行解析,让它知道我们发送的是图片而不似乎文本的HTML。以下代码段通过自动检测GD库支持的图像类型,来写出移植性更好的
PHP程序。如下所示:
代码如下 | 复制代码 |
<?php if(function_exists("imagegif")){ //判断生成GIF格式图像的函数是否存在 header("Content-type:image/gif"); //发送标头信息设置MIME类型为image/gif imagegif($im); //以GIF格式将图像输出到浏览器 }elseif(function_exists("imageipeg")){ header("Content-type:image/jpeg"); imagejpeg($im,"",0.5); }elseif(function_exists("imagepng")){ header("Content-type:image/png"); imagepng($im); }elseif(function_exists("imagewbmp")){ header("Content-type:image/wbmp"); imagewbmp($im); }else{ die("在PHP服务器中,不支持图像"); } ?> |
如果希望将PHP动态绘制的图像保存在本地服务器上,则必须在第二个可选参数中指定一个文件名字符串。这样不仅不会将图像直接输出到浏览器,也不需要使用header()函数发送标头信息。如果使用imageJPEG()函数生成JPEG格式的图像,还可以通过第三个可选参数$quality指定JPEG格式图像的品质,该参数可以提供的值是从0(最差品质,但文件最小)到100(最高品质,文件也最大)的整数,默认值为75.也可以为函数imageWBMP()提供第三个可选参数$forground,指定图像的前景颜色,默认颜色值为黑色。
注意:php中gd库默认是未开启的,我们需要在php.ini中打开才可以,具体步骤
Linux下开启PHP的GD库支持
代码如下 | 复制代码 |
#开启GD库支持有以下几种方法 ##检测GD库是否安装命令 php5 -m | grep -i gd 或者 php -i | grep -i --color gd ##如未安装GD库,则为服务器安装,方法如下 ### 如果是源码安装,则加入参数 --with-gd ### 如果是debian系的linux系统,用apt-get安装,如下 apt-get install php5-gd ### 如果是CentOS系的系统,用yum安装,如下 yum install php-gd ### 如果是suse系的linux系统,用yast安装,如下 yast -i php5_gd ### 如果嫌这个世界不够蛋疼呢,可以在原先编译PHP不支持GD的情况下附加 |
先下zlib源码,libpng源码,gd源码
解压后到源码目录
代码如下 | 复制代码 |
zlib目录 ./configure --prefix=/usr/local/zlib make ; make install make clean libpng目录 cp scripts/makefile.linux ./makefile ./configure --prefix=/usr/local/libpng make ; make install make clean gd目录 ./configure --prefix=/usr/local/libgd --with-png=/usr/local/libpng make ; make install make clean |
最后在php.ini中,搜到[gd]后,在下面加一行
代码如下 | 复制代码 |
extension=/usr/local/libgdgd.so |
然后重启php服务,如果不行,试试reboot
好了,不过最后提醒一下,要知道这个世界很多意外的,源码安装,只添加gd库这一个情况下,PHP版本和库的版本各异,所以:
- 不保证这么付出了这么多后有回报
- 不保证能够成功加载gd.so
- 不保证不怀孕
所以如果是源码安装,最好还是在编译PHP的时候加参数--with-gd
Windows下开启PHP的GD库支持
找到php.ini,打开内容,找到:
;extension=php_gd2.dll
把最前面的分号“;”去掉,再保存即可,如果本来就没有分号,那就是已经开启了。
相关文章
php 中file_get_contents超时问题的解决方法
file_get_contents超时我知道最多的原因就是你机器访问远程机器过慢,导致php脚本超时了,但也有其它很多原因,下面我来总结file_get_contents超时问题的解决方法总结。...2016-11-25- php如何实现抓取网页图片,相较于手动的粘贴复制,使用小程序要方便快捷多了,喜欢编程的人总会喜欢制作一些简单有用的小软件,最近就参考了网上一个php抓取图片代码,封装了一个php远程抓取图片的类,测试了一下,效果还不错分享...2015-10-30
- 相信很多站长都遇到过这样一个问题,访问页面时出现408错误,下面一聚教程网将为大家介绍408错误出现的原因以及408错误的解决办法。 HTTP 408错误出现原因: HTT...2017-01-22
- 这篇文章主要介绍了c#自带缓存使用方法,包括获取数据缓存、设置数据缓存、移除指定数据缓存等方法,需要的朋友可以参考下...2020-06-25
- 下面我们来看一篇关于Android子控件超出父控件的范围显示出来方法,希望这篇文章能够帮助到各位朋友,有碰到此问题的朋友可以进来看看哦。 <RelativeLayout xmlns:an...2016-10-02
- ps软件是现在非常受大家喜欢的一款软件,有着非常不错的使用功能。这次文章就给大家介绍下ps把文字背景变透明的操作方法,喜欢的一起来看看。 1、使用Photoshop软件...2017-07-06
- 1.在没有设置默认值的情况下: 复制代码 代码如下:SELECT userinfo.id, user_name, role, adm_regionid, region_name , create_timeFROM userinfoLEFT JOIN region ON userinfo.adm_regionid = region.id 结果:...2014-05-31
intellij idea快速查看当前类中的所有方法(推荐)
这篇文章主要介绍了intellij idea快速查看当前类中的所有方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-09-02js导出table数据到excel即导出为EXCEL文档的方法
复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta ht...2013-10-13- 批量更新mysql更新语句很简单,更新一条数据的某个字段,一般这样写:复制代码 代码如下:UPDATE mytable SET myfield = 'value' WHERE other_field = 'other_value';如果更新同一字段为同一个值,mysql也很简单,修改下where即...2013-10-04
- 这篇文章主要介绍了IDEA中的clean,清除项目缓存图文教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-09-25
- ps软件是一款非常不错的图片处理软件,有着非常不错的使用效果。这次文章要给大家介绍的是ps怎么制作倒影,一起来看看设计倒影的方法。 用ps怎么做倒影最终效果̳...2017-07-06
- 本文涉及的主题虽然很基础,在许多人看来属于小伎俩,但在JavaScript基础知识中属于一个综合性的话题。这里会涉及到对象属性的封装、原型、构造函数、闭包以及立即执行表达式等知识。公有方法 公有方法就是能被外部访问...2015-11-08
安卓手机wifi打不开修复教程,安卓手机wifi打不开解决方法
手机wifi打不开?让小编来告诉你如何解决。还不知道的朋友快来看看。 手机wifi是现在生活中最常用的手机功能,但是遇到手机wifi打不开的情况该怎么办呢?如果手机wifi...2016-12-21- 最近想自学PHP ,做了个验证码,但不知道怎么搞的,总出现一个如下图的小红叉,但验证码就是显示不出来,原因如下 未修改之前,出现如下错误; (1)修改步骤如下,原因如下,原因是apache权限没开, (2)点击打开php.int., 搜索extension=ph...2013-10-04
- 单个字符分割 string s="abcdeabcdeabcde"; string[] sArray=s.Split('c'); foreach(string i in sArray) Console.WriteLine(i.ToString()); 输出下面的结果: ab de...2020-06-25
- javascript控制页面控件隐藏显示的两种方法,方法的不同之处在于控件隐藏后是否还在页面上占位 方法一: 复制代码 代码如下: document.all["panelsms"].style.visibility="hidden"; document.all["panelsms"].style.visi...2013-10-13
连接MySql速度慢的解决方法(skip-name-resolve)
最近在Linux服务器上安装MySql5后,本地使用客户端连MySql速度超慢,本地程序连接也超慢。 解决方法:在配置文件my.cnf的[mysqld]下加入skip-name-resolve。原因是默认安装的MySql开启了DNS的反向解析。如果禁用的话就不能...2015-10-21- 本篇文章是对C#方法进行了详细的总结与介绍,需要的朋友参考下...2020-06-25
- 步骤:Window -> PHP -> Editor -> Templates,这里可以设置(增、删、改、导入等)管理你的模板。新建文件注释、函数注释、代码块等模板的实例新建模板,分别输入Name、Description、Patterna)文件注释Name: 3cfileDescriptio...2013-10-04