当前位置:  编程技术>WEB前端
本页文章导读:
    ▪UrlRewriter 缓存问题      在开发一个网站功能时,由于session 缓存不能及时清除。开始了一系列的探索。 现找到几篇不错的文章。 首先是 F5和 CTRL+F5的区别 F5和CTRL+F5的区别 (留给比较懒的人 :F5是优先读取缓.........
    ▪JS:1.8,字符串(string)对象(length,indexOf(),lastIndexOf(),replace(),match(),toUpperCase(),toLowerCase())      ylbtech-string:字符串(string)对象JavaScript String(字符串)对象 实例length属性indexOf(),lastIndexOf()replace()match()toUpperCase(),toLowCase()JS:1.8.0,JavaScript String(字符串)对象 实例返回顶部计算字符串的长.........
    ▪Linux下Apache Httpd和tomcat整合      最近学习apache+tomcat将网络上、书上和API上看到进行了一下整理,做了个小测试,算做入门学习总结吧,具体内容如下: 1、准备 下载需要的文件。这里假定你已经正确安装配置好了JDK。 &nb.........

[1]UrlRewriter 缓存问题
    来源: 互联网  发布时间: 2013-11-06

在开发一个网站功能时,由于session 缓存不能及时清除。开始了一系列的探索。

现找到几篇不错的文章。

首先是 F5和 CTRL+F5的区别

F5和CTRL+F5的区别
(留给比较懒的人 :F5是优先读取缓存但框架内只读取本地缓存 。CTRL+F5发起一次新的请求,跳过缓存)
背景

我司的网站是框架结构的,一个页面里有多个iframe.正因为这个原因,每次当我自信满满的把修改过的JS文件提交到SVN上后,没过多久,某个 后台程序员就会来找我说:怎么JS还报错呢,我已经CTRL+F5了啊,你提交对了吗.我只好到他座位上拿起鼠标进行操作:右键->本帧-> 在新标签中打开新帧->CTRL+F5->切换到原标签->F5.这一番操作之后,终于对了.同样的事情已经发生过很多次了.这也证明 了不少程序员同志还是不够了解浏览器的缓存机制.

基础知识

问题的根本原因就是,在火狐里,CTRL+F5清除不了框架页面的缓存.包括框架页面本身和其所有的嵌入元素(.js,.css,.jpg等).所以本文的真正标题是"Firefox中如何才能跳过缓存刷新框架内的页面".首先我要讲一下相关的基础知识.

一.读取缓存

搞WEB开发的经常会说:有缓存,CTRL+F5一下.或者:有缓存,CTRL+SHIFT+DEL清一下.那么你知道浏览器有几种方式来读取缓存文件吗.从是否发送了HTTP请求来区分,我觉的可以分两种:

1.浏览器从服务器返回的过期时间判断得出,该文件还没有过期,所以直接从缓存文件夹读取缓存文件,显示网页,并没有走任何网络连接.

2.浏览器发送HTTP请求,请求头中包含了If-Modified-Since 和 If-None-Match字段.让服务器来判断是否应该读取缓存文件.如果服务器返回304响应,无响应实体,表示服务器认为这个文件没有变化.可以使 用缓存中的对应文件,这时浏览器才会读取缓存.(如果不了解HTTP,可以买本<<HTTP权威指南>>看看.或者直接RFC2616)

我把第一种读取缓存的方式称之为"无请求读取缓存",第二种方式称之为"无修改读取缓存".

二.刷新方式

这里的刷新方式是指能通过哪些方式让一个网页重新加载,我从表现上大概分了三种:

1.最常用的,点击浏览器的刷新按钮,或者按下F5

2.CTRL+F5,功能是跳过缓存刷新

3.浏览器地址栏上回车,IE里把这种请求方式归为"导航"操作

在读取缓存方面,这三种刷新方式的表现都不一样.第三种方式的表现通常是只刷新主页面文件,其他内嵌文件全部"无请求读取缓存".大部分开发者都不会这么刷新页面,所以本次试验不对比这种刷新方式.

三.F5和CTRL+F5的区别

本文的试验部分只针对F5和CTRL+F5两种刷新方式做对比.这里讲一下为什么F5不能跳过缓存,而后者可以.答案就是发送的请求头不一样.而且不同的浏览器发送的请求头也有一些区别.

1.F5触发的HTTP请求的请求头中通常包含了If-Modified-Since 或 If-None-Match字段,或者两者兼有.如果服务器认为被请求的文件没有发生变化,则返回304响应,也就没有跳过缓存.

2.CTRL+F5触发的HTTP请求的请求头中没有上面的那两个头,却有Pragma: no-cache 或 Cache-Control: no-cache 字段,或者两者兼有.服务器看到no-cache这样的值就会把最新的文件响应过去.也就跳过了缓存.

试验对比

试验题目为:使用F5和CTRL+F5在包含iframe的页面上进行刷新操作,五大浏览器各自的表现不同.本次试验使用Fiddler监测网络请求,而且不考虑缓存相关的HTTP响应头的影响.

主页面index.html源码为


    
[2]JS:1.8,字符串(string)对象(length,indexOf(),lastIndexOf(),replace(),match(),toUpperCase(),toLowerCase())
    来源:    发布时间: 2013-11-06
ylbtech-string:字符串(string)对象
  • JavaScript String(字符串)对象 实例
  • length属性
  • indexOf(),lastIndexOf()
  • replace()
  • match()
  • toUpperCase(),toLowCase()
JS:1.8.0,JavaScript String(字符串)对象 实例返回顶部
计算字符串的长度如何使用长度属性来计算字符串的长度。为字符串添加样式如何为字符串添加样式。indexOf() 方法如何使用 indexOf() 来定位字符串中某一个指定的字符首次出现的位置。match() 方法如何使用 match() 来查找字符串中特定的字符,并且如果找到的话,则返回这个字符。如何替换字符串中的字符 - replace()如何使用 replace() 方法在字符串中用某些字符替换另一些字符。
JS:1.8.1,length属性 返回顶部
<html>
<body>

<script type="text/javascript">

var txt="Hello World!"

//输出字符串的长度
document.write(txt.length)

</script>

</body>
</html>
JS:1.8.2,indexOf(),lastIndexOf() 返回顶部
<html>
<body>
<script language="javascript">
var txt="Hello world!";

// indexOf(),lastIndexOf() 来定位字符串中某一个指定的字符首次出现的位置
//若不存在则返回“-1”

document.write(txt+"<br>");

document.write("该字符串的长度为:"+txt.length+" <br>");
document.write("从前往后找,第一位字符'l'它的索引位置为:"+txt.indexOf('l'+"<br>"));
document.write("从后往前查,第一个字符'l'它的索引位置为:"+txt.lastIndexOf('l')+"<br>");
</script>

</body>
</html>
JS:1.8.3,replace()返回顶部
<html>
<body>

<h3>replace(要替换内容,替换成的内容)</h3>
<script language="javascript">
var txt
    
[3]Linux下Apache Httpd和tomcat整合
    来源: 互联网  发布时间: 2013-11-06

最近学习apache+tomcat将网络上、书上和API上看到进行了一下整理,做了个小测试,算做入门学习总结吧,具体内容如下:

1、准备

下载需要的文件。这里假定你已经正确安装配置好了JDK。

       例如:chmod 777 jdk-6u37-linux-i586.bin

./jdk-6u37-linux-i586.bin 安装jdk

           mv 命令移动到指定路径下

       配置环境变量

              root用户,编辑 etc/profile文件,修改JAVA_HOME路径如下

              #Java environment

              export JAVA_HOME=/usr/local/jdk1.6.0_37

              export CLASSPATH=./:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

              export PATH=$PATH:$JAVA_HOME/bin

              export JRE_HOME=$JAVA_HOME/jre

       并使之生效,执行

              source /etc/profile

 

到Apache官方网站下载所需要的文件:

httpd-2.4.3.tar.gz

apache-tomcat-6.0.36.tar.gz

tomcat-connectors-1.2.37-src.tar.gz

其中httpd和jakarta-tomcat-connectors为源码包,apache-tomcat为二进制包。

2、安装apache

代码:

# tar zxvf httpd-2.4.3.tar.gz

# cd httpd-2.4.3

# ./configure --prefix=/usr/local/apache2 

# make 

# make install

# ln -s /usr/local/apache2/ apache

 

备注1:安装过程中提示需要gcc支持,解决方法如下

yum -y install gcc

yum -y install gcc-c++

 

备注2:安装过程中提示提示APR not found 解决方法如下

下载apr安装包:

http://apache.etoak.com//apr/apr-1.4.6.tar.gz

tar zxvf apr-1.4.6.tar.gz

cd apr-1.4.6

./configure --prefix=/usr/local/apr

make && make install

 

下载apr-util安装包:

http://mirror.bjtu.edu.cn/apache//apr/apr-util-1.5.1.tar.gz

tar zxvf apr-util-1.5.1.tar.gz

cd apr-util-1.5.1

./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/bin/apr-1-config

make && make install

 

下载pcre安装包:

ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.32.zip

unzip pcre-8.32.zip

cd pcre-8.32

./configure --prefix=/usr/local/pcre

make && make install

 

安装httpd包:

tar zxvf httpd-2.4.3.tar.gz

cd httpd-2.4.3

 ./configure --prefix=/usr/local/apache2 --enable-so --enable-rewrite --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-pcre=/usr/local/pcre/bin/pcre-config

make && make install

 

3、安装Tomcat

代码:

# tar -zxvf apache-tomcat-6.0.36.tar.gz

# mv apache-tomcat-6.0.36 /usr/local/tomcat6

# ln -s /usr/local/tomcat6/ tomcat (建立连接这一步可以不需要)

 

4、ajp_proxy方式整合配置

配置两个tomcat做负载均衡,tomcat1、tomcat2:

首先注意修改两个tomcat的端口配置,修改server.xml:

       <Server port="8005" shutdown="SHUTDOWN">

       <Server port="9005" shutdown="SHUTDOWN">

      

       <Connector port="8080" protocol="HTTP/1.1"  connectionTimeout="20000"

                  redirectPort="8443" />


    
最新技术文章:
 




特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3