Monthly Archives: 一月 2016

Expires和max-age的区别

Expires和max-age都可以用来指定文档的过期时间,但是二者有一些细微差别

1.Expires在HTTP/1.0中已经定义,Cache-Control:max-age在HTTP/1.1中才有定义,为了向下兼容,仅使用max-age不够;
2.Expires指定一个绝对的过期时间(GMT格式),这么做会导致至少2个问题
   1)  客户端和服务器时间不同步导致Expires的配置出现问题 
   2)  很容易在配置后忘记具体的过期时间,导致过期来临出现浪涌现象;

3.max-age 指定的是从文档被访问后的存活时间,这个时间是个相对值(比如:3600s),相对的是文档第一次被请求时服务器记录的Request_time(请求时间)

4.Expires指定的时间可以是相对文件的最后访问时间(Atime)或者修改时间(MTime),而max-age相对对的是文档的请求时间(Atime)

5.在Apache中,max-age是根据Expires的时间来计算出来的max-age = expires- request_time:(mod_expires.c)

429 expires = base + additional;
430 apr_table_mergen(t, “Cache-Control”,
431 apr_psprintf(r->pool, “max-age=%” APR_TIME_T_FMT,
432 apr_time_sec(expires – r->request_time)));

注:如果是A,base=request_time,M的话base=finfo.mtime.
expires – request_time得到max-age,如果Expires根据的是A(也就是AccessTime)设置的(A后面的值就是addtional),那么expires设置的值就等于addtional值,但是如果Expires根据的是Mtime,那么如果M后面的参数小于最后修改时间到当前时间的差(比方说2小时前修改了文件(19:00:00),现在设置M3600(现在是21:00:00)并且访问,max-age=expires-request_time = (finfo.mtime+additional)- request_time),计算出的max-age就是负数(可以试验看到这个结果):
max-age = (19:00:00+3600/3600) – 21:00:00 = -3600s

这样,在Apache中,max-age就不仅仅是相对Atime的时间了,如果设置为M,相对的是Mtime。

转载:http://blog.csdn.net/luoluoyu2013/article/details/40984961

shell mysql

如下脚本创建数据库yourdbname,并制定默认的字符集是utf8。

CREATE DATABASE IF NOT EXISTS yourdbname DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

如果要创建默认gbk字符集的数据库可以用下面的sql:

create database yourdb DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;

mysql 导入

mysql -uroot -p123456 –default-character-set=utf8 dealight_storecom< c:/zzc.dealight.sql
mysql -uroot -p123456 –force –default-character-set=utf8 abc</abc.sql
或者
use 数据库名
source E:/123/ueb_newforg_new20150413.sql
source 数据库文件路径
导出
mysqldump -u 用户名 -p密码 数据库名 > 保存路径/名

香港迪士尼游记(再不怕没有开房的借口了)

    

    香港迪士尼个人感觉很适合拍拖的人去,好多地方和机遇蛮适合情侣的,去之前最好是早上天气晴朗,不然不够时间玩的啊~~~购票的话,可以在携程之类购买,然后进门有个二维码出票的地方~`

    

    微信截图_20160127144016

   

    游玩的方式跟深圳欢乐谷之类的差不多,要注意的里面的小礼品和东西好贵,动不动都上百元的~~~~什么照片和小饰品之类的~~~~

    

IMG_20140701_154745

   要注意下表演节目的时间,入门的游玩手册有记录什么表演在哪里开始

    同时我觉得意义做大的晚上的烟花汇演,真的好好看,很值得去看一下,在晚上8点半开始,虽然有点晚,但是有句话很正确,越夜越来机开房

     

Photo_201407012226245TSH

magento Grid 行渲染 和option添加

$this ->addColumn( 'type_id', array (
    'header' => Mage::helper ('newfrog_newzone')-> __('Zone Type') ,
    'index' => 'type_id',
    'sortable' => false,
    'renderer'  =>'Newfrog_Newzone_Block_Adminhtml_Newzone_Renderer_RendererType',
    'type' => 'options',
    'options' => array( 1=>'Brand Zone', 3=>'Special Offer Zone' ,4=> 'Hot Promotions') ,
));


class Newfrog_Newzone_Block_Adminhtml_Newzone_Renderer_RendererType extends Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract
{

    public function render(Varien_Object $row)
    {
    $value =  $row->getData ($this-> getColumn()->getIndex ());
    switch ($value )
    {
        case 1 :
            return 'Brand Zone' ;
            break ;
        case 2:
            return 'Exclusive Deals' ;
            break ;
        case 3:
            return 'Special Offer Zone' ;
            break ;
        case 4:
            return 'Hot Promotions' ;
            break ;
        default:
            Mage::helper ('newfrog_newzone')-> __(' 未知类型 ');
    }



}

}

产品详细页添加tab gorup

在xml布局文件中
<block type="cms/block" name="cms_payment_and_shipping" as="payment_and_shipping">
    <action method ="setBlockId" ><block_id> payment_and_shipping </block_id></action>
    <action method ="addToParentGroup" ><group>ecool_detailed_info</group></action>
    <action method ="setTitle" translate ="value"><value>Payment and Shipping</value></action>
</block>
在模版输出
<div class="product-collateral toggle-content tabs">
    <?php if ($detailedInfoGroup = $this->getChildGroup ('ecool_review_info', 'getChildHtml' )):?>
        <dl id="collateral-tabs" class= "collateral-tabs" >
            <?php foreach ($detailedInfoGroup as $alias => $html): ?>
                <dt class= "tab"><span><?php echo $this ->escapeHtml( $this->getChildData ($alias, 'title')) ?></span></dt>
                <dd class="tab-container" >
                    <div class= "tab-content" ><?php echo $html ?> </div>
                </dd>
            <?php endforeach; ?>
        </dl>
    <?php endif ; ?>
</div>

Magento 模块后台访问路径在Linux环境下404

在Window做好的模块上传到Linux测试环境下,后台访问路径却404

etc/adminhtml.xml

<menu>
        <newfrog module="relation">
            <children>
                <zone module="newfrog_newzone">
                    <title>Manage Gift Zone</title>
                    <sort_order>999</sort_order>
                    <action>adminhtml/newzone/index</action>
                </zone>
            </children>
        </newfrog>
    </menu>

etc/config.xml

<admin>
        <routers>
            <adminhtml>
                <args>
                    <modules>
                        <newfrog_newzone before="Mage_Adminhtml">Newfrog_Newzone_Adminhtml</newfrog_newzone>
                    </modules>
                </args>
            </adminhtml>
        </routers>
    </admin>

app/code/local/Newfrog/Newzone/controllers/adminhtml/NewzoneController.php

然后发现……………

原来是adminhtml文件夹需要大写Adminhtml(Linux区分大小写的)



Magento 搜索结果优化开发思路

     最近公司需要对Magento网站的搜索结果进行优化~~~所以研究下搜索大概的思路;
      首先,搜索控制器判断在表”catalogsearch_query”中是否 记录储存有此关键字,假如有就直接调取对应表中”catalogsearch_result”中的资源(所以有时候修改搜索不生效,是因为储存直接调用,在后台catelog -> search Terms管理); 假如不存在关键字,就有会调用app/code/local/Newfrog/CatalogSearch/Model/Resource/Fulltext.php,检索catalogsearch_fulltext表的data_index字段 “1018|5 LED Bicycle Lights Bike Flashlight Torch Light|1″(当刷新索引 Catalog Search Index时,会重新构造此表),开头的”1018为产品的SKU | 产品名称”,所以我们要写自己的SQL语句时候, “instr(replace(`catalogsearch_fulltext `.`data_index`,”|”,” “)”和’% ‘.$关键字.’ %’,达到匹配开头和结尾的情况.