code/libraries/joomlatools/library/dispatcher/behavior/cacheable.php
protected function _getEtag()
    {
        $response = $this->getResponse();

        if($response->isDownloadable())
        {
            $info = $response->getStream()->getInfo();
            $etag = sprintf('"%x-%x-%s"', $info['ino'], $info['size'],base_convert(str_pad($info['mtime'],16,"0"),10,16));
        }
        else $etag = crc32($this->getUser()->getId().'/###'.$this->getResponse()->getContent());

        return $etag;
    }
protected function _getEtag()
    {
        $response = $this->getResponse();

        if($response->isDownloadable())
        {
            $info = $response->getStream()->getInfo();
            $etag = sprintf('"%x-%x-%s"', $info['ino'], $info['size'],base_convert(str_pad($info['mtime'],16,"0"),10,16));
        }
        else $etag = crc32($this->getUser()->getId().'/###'.$this->getResponse()->getContent());

        return $etag;
    }
protected function _getEtag ( ) { $ response = $ this -> getResponse ( ) ; if ( $ response -> isDownloadable ( ) ) { $ info = $ response -> getStream ( ) -> getInfo ( ) ; $ etag = sprintf ( '"%x-%x-%s"' , $ info [ 'ino' ] , $ info [ 'size' ] , base_convert ( str_pad ( $ info [ 'mtime' ] , 16 , "0" ) , 10 , 16 ) ) ; } else $ etag = crc32 ( $ this -> getUser ( ) -> getId ( ) . '/###' . $ this -> getResponse ( ) -> getContent ( ) ) ; return $ etag ; }
Generate a response etag

For files returns a md5 hash of same format as Apache does. Eg "%ino-%size-%0mtime" using the file
info, otherwise return a crc32 digest the user identifier and response content

@link http://stackoverflow.com/questions/44937/how-do-you-make-an-etag-that-matches-apache

@return string
Generate a response etag