Php Yii:如何动态呈现部分JavaScript小部件

Php Yii:如何动态呈现部分JavaScript小部件,php,ajax,yii,Php,Ajax,Yii,我在动态重新加载html文件中的区域时遇到问题。我使用基于Ajax的方法。我成功地更新了我感兴趣的区域(HTMLdiv标记),但每次更新时,都会下载相同的JavaScript并与替换的HTML代码一起处理,这会耗费时间。我希望浏览器在AJAX更新时重用上次下载的JavaScript文件,而不是一次又一次地获取相同的内容,这会导致额外的开销。我是什么意思?假设我有一个按钮小部件,它附带了Widget.jsJavaScript。此JavaScript将负责在单击按钮时触发的事件。每次单击此按钮时,事

我在动态重新加载html文件中的区域时遇到问题。我使用基于Ajax的方法。我成功地更新了我感兴趣的区域(HTMLdiv标记),但每次更新时,都会下载相同的JavaScript并与替换的HTML代码一起处理,这会耗费时间。我希望浏览器在AJAX更新时重用上次下载的JavaScript文件,而不是一次又一次地获取相同的内容,这会导致额外的开销。我是什么意思?假设我有一个
按钮小部件
,它附带了
Widget.js
JavaScript。此JavaScript将负责在单击按钮时触发的事件。每次单击此按钮时,事件将“拍摄”AJAX请求,HTML页面上的特定区域将随着
widget.js的下载而更新(如有必要)。我希望只在第一次下载
widget.js
,但目前它会在每个AJAX请求中下载。我注意到的是,每次请求提到的JavaScript文件时,都会附加一个带有随机值的查询参数
\uu

widget.js?_=1374504824837
如何禁用此随机参数

myindex.php

<p>
    <div id='widget-container'>
        <?php 
            $this->renderPartial('widget');
        ?>
    </div>
</p>
<?php
    $url = 'widget';
    $update = '#widget-container';
    $this->widget('ext.bootstrap.widgets.TbButton',
    array('label' => 'Widget',
        'size' => 'medium',
        'buttonType' => 'ajaxButton',
        'url' => $url,
        'ajaxOptions' => array('type' => 'POST',
                  'update' => $update,
                  'cache' => false),
        'htmlOptions' => array('id' => 'widget'.uniqid())
    )
    );
?>
mywidget.php

<p>
    <div id='widget-container'>
        <?php 
            $this->renderPartial('widget');
        ?>
    </div>
</p>
<?php
    $url = 'widget';
    $update = '#widget-container';
    $this->widget('ext.bootstrap.widgets.TbButton',
    array('label' => 'Widget',
        'size' => 'medium',
        'buttonType' => 'ajaxButton',
        'url' => $url,
        'ajaxOptions' => array('type' => 'POST',
                  'update' => $update,
                  'cache' => false),
        'htmlOptions' => array('id' => 'widget'.uniqid())
    )
    );
?>

有一个扩展,用于在用ajax更新视图时防止javascript文件的重复链接,从而取代Yii原来的ClientScript类

稍微不同的方法是将renderPartial的processOutput设置为false,但在这种情况下,它根本不会嵌入任何js

$this->renderPartial('widget', array(), false, false);