为什么每个刷新页面,缓存重新加载?

时间:2016-06-09 10:34:25

标签: yii2 yii2-advanced-app

我已经通过Yii2对我的网站进行了编程。当我刷新我的网站时,它就像Ctl + F5一样,所有font awesome和我网站的所有缓存都会重新加载。看起来好像我第一次打开页面。

Link of my website

1 个答案:

答案 0 :(得分:5)

配置文件中添加。根据你的需要。

  

<强> $ linkAssets

     

是否使用符号链接发布资产文件。默认为   false,表示资产文件被复制到$ basePath。使用符号   链接具有已发布资产永远存在的好处   与源资产一致,没有复制操作   需要。这在开发过程中特别有用。

'components' => [
    'assetManager' => [
        'linkAssets' => true,
    ], 
]

或者

  

<强> $ forceCopy

     

是否应该复制正在发布的目录   在目标目录中找到。此选项仅在以下情况下使用   发布目录。您可能希望在此期间将其设置为true   开发阶段,以确保始终发布目录   最新。不要像生产服务器那样将此设置为true   显着降低了性能。

'components' => [
    'assetManager' => [
        'forceCopy' => true,
    ], 
]

有关详细信息,请单击这些有用的链接

  1. Link Assets - Yii2 Asset Manager
  2. Force Copy - Yii2 Asset Manager
  3. Assets-Clear-Cache - Yii2 (Stack Overflow)
  4. 或者,

    因为,我正在使用Yii2-App-Basic。因此,我的资产正在ROOT/web/assets folder中创建。所以,我手动点击此操作以清除我的缓存。这不是清除缓存的好方法。尽管如此,它暂时有用。

    此功能,我在 SiteController.php 中创建。

    而且,我点击了网址:MyWebsite.com/site/clear-cache

    <?
    public function actionClearCache(){
      $cacheDirPath = $_SERVER['DOCUMENT_ROOT'].'/assets';
      if($this->destroy_dir($cacheDirPath, 0)){
        Yii::$app->session->setFlash('success', 'Cache cleared.');
      } 
      return $this->render('some-page');
    }
    
    private function destroy_dir($dir, $i = 1) {
      if (!is_dir($dir) || is_link($dir))
        return unlink($dir);
      foreach (scandir($dir) as $file) {
        if ($file == '.' || $file == '..') continue;
        if (!$this->destroy_dir($dir . DIRECTORY_SEPARATOR . $file)) {
          chmod($dir . DIRECTORY_SEPARATOR . $file, 0777);
          if (!$this->destroy_dir($dir . DIRECTORY_SEPARATOR . $file))
            return false;
        };
      }
      if($i == 1)return rmdir($dir);
      return true;
    }