Comments (3)
Before starting, it might be a good idea to see what the underlying cache stores do with the key. Some may already be hashing it. Here are the results of that check:
- apc: the passed key is combined with a prefix and then used as the final key without any hashing
- array: the passed key used as the final key without hashing or any other supplemental data
- database: the passed key is combined with a prefix and then used as the final key without any hashing
- file: the passed key is sha1-hashed and used as the filename containing the serialized object
- memcached: the passed key is combined with a prefix and then used as the final key without any hashing
- redis: the passed key is combined with a prefix string and a sha1-hashed namespace and then used as the final key
So, none of the cache stores hash the key themselves, except for the file store. The database store might get into trouble on older versions of mysql where the maximum key length wasn't that high. Performance could probably be increased with all stores by keeping the keylength down.
from laravel-model-caching.
Choosing a hashing function:
The key hash must not be salted and it has no security implications. SHA1 is fast and has a good collision resistance. It is also widely used when caching. It seems to be a good choice.
For a comparison of hash function properties, see: https://en.wikipedia.org/wiki/SHA-2#Comparison_of_SHA_functions
from laravel-model-caching.
Implemented in release 0.2.18.
from laravel-model-caching.
Related Issues (20)
- Only flush cache when delete() returns a count
- Clear cache in a record of the model. HOT 2
- Saving not working with eloquent strict mode HOT 2
- What is cacheCooldownSecounds definition? HOT 1
- Add support for Laravel 10 HOT 2
- Object of class Illuminate\\Database\\Query\\Expression could not be converted to string HOT 6
- Since 0.12.4 I get error "GeneaLabs\LaravelModelCaching\CacheKey::processEnum(): Argument #1 ($value) must be of type BackedEnum|UnitEnum|string, null given, called in ...\vendor\genealabs\laravel-model-caching\src\CacheKey.php on line 409" HOT 23
- Cannot access "parent" when current class scope has no parent HOT 1
- Laravel v10.3.0 breaks LaravelModelCaching HOT 2
- checkCooldownAndFlushAfterPersisting(): Argument #2 ($relationship) must be of type string, array given, called in /var/www/html/vendor/genealabs/laravel-model-caching/src/Traits/ModelCaching.php on line 83 HOT 8
- Is table join supported? HOT 7
- The attribute [column3] either does not exist or was not retrieved for model HOT 1
- Stale cached value returned where(...)->first() HOT 4
- Fix for GeneaLabs\LaravelModelCaching\CacheKey::processEnum(): Argument #1 ($value) must be of type BackedEnum|UnitEnum|string, null given
- processEnum(): Argument #1 ($value) must be of type BackedEnum|UnitEnum|Illuminate\Database\Query\Expression|string, null given HOT 2
- Conflict with Spatie Schemaless
- Laravel 11 upgrade blocked by laravel-pivot-events dependency HOT 1
- Missing import in CachedBuilder?
- Fix failing tests HOT 1
- Uuid fromBytes throwing a error HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from laravel-model-caching.